随笔分类 -  最短路

最短路问题 Dijkstra算法- 路径还原
摘要:1 // 路径还原 2 // 求最短路,并输出最短路径 3 // 在单源最短路问题中我们很容易想到,既然有许多条最短路径,那将之都存储下来即可 4 // 但再想一下,我们是否要把所有的最短路径都求出来呢? 5 // 实际上不需要,这里我们用一个数组来记录最短路径,之后的最短路径都是在之前最短路径上的 阅读全文
posted @ 2020-02-16 20:05 带你AK,带你飞 阅读(411) 评论(0) 推荐(0)
任意两点间的最短路问题 Floyd-Warshall算法
摘要:这一算法与之前的Bellman-F=Ford算法一样,都可以判断负环 只需要检查dp [i] [j] 是负数的顶点i即可 1 // 求解任意两点间的最短路径问题 2 // Floyed-Warshall算法 3 // 复杂度O(N^3),N为顶点数 4 5 #include <cstdio> 6 # 阅读全文
posted @ 2020-02-16 18:53 带你AK,带你飞 阅读(327) 评论(0) 推荐(0)
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; 阅读全文
posted @ 2020-02-16 11:09 带你AK,带你飞 阅读(195) 评论(0) 推荐(0)
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 阅读全文
posted @ 2020-02-16 10:11 带你AK,带你飞 阅读(150) 评论(0) 推荐(0)
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; 阅读全文
posted @ 2020-02-16 09:41 带你AK,带你飞 阅读(510) 评论(0) 推荐(0)
利用Bellman-Ford算法(有向图) 判断负环
摘要:1 // 根据Bellman-Ford算法的原理 2 // 判断负环(算法的最大更新次数,应该是顶点数-1次) 3 // 而如果存在负环,算法会一直更新下去 4 5 // 我们根据循环进行的次数,来判断负环 6 7 #include <iostream> 8 #include <cstdio> 9 阅读全文
posted @ 2020-02-15 21:56 带你AK,带你飞 阅读(738) 评论(0) 推荐(0)
单源最短路 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; 阅读全文
posted @ 2020-02-15 18:29 带你AK,带你飞 阅读(325) 评论(0) 推荐(0)