随笔分类 - 最短路
最短路问题 Dijkstra算法- 路径还原
摘要:1 // 路径还原 2 // 求最短路,并输出最短路径 3 // 在单源最短路问题中我们很容易想到,既然有许多条最短路径,那将之都存储下来即可 4 // 但再想一下,我们是否要把所有的最短路径都求出来呢? 5 // 实际上不需要,这里我们用一个数组来记录最短路径,之后的最短路径都是在之前最短路径上的
阅读全文
任意两点间的最短路问题 Floyd-Warshall算法
摘要:这一算法与之前的Bellman-F=Ford算法一样,都可以判断负环 只需要检查dp [i] [j] 是负数的顶点i即可 1 // 求解任意两点间的最短路径问题 2 // Floyed-Warshall算法 3 // 复杂度O(N^3),N为顶点数 4 5 #include <cstdio> 6 #
阅读全文
Dijkstra算法2
摘要:1 // 再来一手精髓的Dijkstra 2 // 复杂度O( E*log(V) ) 3 4 #include <cstdio> 5 #include <iostream> 6 #include <vector> 7 #include <queue> 8 9 using namespace std;
阅读全文
Dijkstra算法 1
摘要:1 // Dijkstra算法,适用于没有负边的情况 2 // 注意:是没有负边,不是没有负环 3 // 在这一条件下,可以将算法进行优化 4 // 从O(v*E)的复杂度,到O(V^2)或者是O(E*log(V)) 5 // 现在我们来看第一种O(V^2)的实现 6 7 #include <cst
阅读全文
Bellman-ford算法 无向图
摘要:1 // 单源最短路问题 2 // Bellman-Ford算法 3 // 复杂度O(V*E) 4 5 //! 可以判断负圈 6 7 8 #include <cstdio> 9 #include <iostream> 10 11 // 最大边数 12 const int max_E=10000+2;
阅读全文
利用Bellman-Ford算法(有向图) 判断负环
摘要:1 // 根据Bellman-Ford算法的原理 2 // 判断负环(算法的最大更新次数,应该是顶点数-1次) 3 // 而如果存在负环,算法会一直更新下去 4 5 // 我们根据循环进行的次数,来判断负环 6 7 #include <iostream> 8 #include <cstdio> 9
阅读全文
单源最短路 Bellman-Ford算法(有向图)
摘要:1 // 单源最短路问题 2 // Bellman-Ford算法 3 // 复杂度O(V*E) 4 5 //! 可以判断负圈 6 7 8 #include <cstdio> 9 #include <iostream> 10 11 // 最大边数 12 const int max_E=10000+2;
阅读全文
浙公网安备 33010602011771号