文章分类 - 算法学习笔记
备战蓝桥杯,目标国二。
试题集从蓝桥真题、Acwing、力扣上面选取。
摘要:以下文章: $N$代表点数,$M$代表边数。 Prim算法 1.找到不在最小生成树中的距离最近的点t 2.将点t加入到集合中 3.利用点t更新其他不在最小生成树中的点。 const int N = 550; int dist[N]; bool st[N]; int g[N][N]; int prim
阅读全文
摘要:SPFA算法 最坏时间复杂度为:$O(m*n)$.一般为.$O(m)$ 该算法与堆优化版本的Dijkstra算法很像,但相较与Dijkstra算法每次松弛,SPFA算法仅仅只会松弛更新的最小点与其相关的边。 SPFA算法思想: 每一次松弛可以更新的边,然后将其点加入队列中等待下一次松弛,直到已经松弛
阅读全文
摘要:上一篇笔记介绍了Dijkstra算法的两种实现方式,其中朴素版本的Dijkstra算法的时间复杂度为$O(N^2+M)$,而堆优化版本的时间复杂度为:$O(M∗log(N))$。 对于稀疏图,我们一般采用Dijkstra算法,对于稠密图我们一般采用堆优化版本的Dijkstra算法。 而Dijkstr
阅读全文
摘要:朴素版本的Dijkstar,时间复杂度为O($n^2$+$m$) 堆优化版本的Dijkstra,时间复杂度为O($mlogn$) 下面给出两个模板,求其点数1-N的最短路。 #include <bits/stdc++.h> using namespace std; const int N = 510
阅读全文