任意两点间的最短路问题(Floyd-Warshall算法)
2017-02-19 19:51
417 查看
#define _CRT_SECURE_NO_WARNINGS /* 7 10 0 1 5 0 2 2 1 2 4 1 3 2 2 3 6 2 4 10 3 5 1 4 5 3 4 6 5 5 6 9 0 6 */ #include <iostream> #include <vector> #include <utility> #include <queue> #include <functional> #include <algorithm> #include <cstdio> using namespace std; const int maxn = 1010 + 20; const int INF = 99999999; int d[maxn][maxn]; //d[u][v]表示边e=(u,v)的权值(不存在时设为INF,不过d[i][j]=0) int V, E; void input(); void warshall_floyd(); void init(); void init() { for (int i = 0; i < V; i++) { for (int j = 0; j < V; j++) { if (i == j) { d[i][j] = 0; } else { d[i][j] = INF; } } } } void input() { int s, t, ct; for (int i = 0; i < E; i++) { cin >> s >> t >> ct; d[s][t] = d[t][s] = ct; } } void warshall_floyd() { for (int k = 0; k < V; k++) { //考虑经过顶点k和不经过顶点k的情况 for (int i = 0; i < V; i++) { for (int j = 0; j < V; j++) { d[i][j] = min(d[i][j], d[i][k] + d[k][j]); } } } } int main() { cin >> V >> E; init(); //必须要初始化 input(); warshall_floyd(); int st, ov; cin >> st >> ov; //输入起点终点 cout << d[st][ov] << endl; return 0; }
相关文章推荐
- 【算法】Floyd-Warshall算法(任意两点间的最短路问题)(判断负圈)
- P103 任意两点之间的最短路问题 Floyd_warshall算法
- Floyd-Warshall算法 (任意两点间的最短路问题)
- Floyd-Warshall算法--求任意两点最短距离
- Floyd-Warshall算法求任意两点间最短路径
- Floyd-Warshall算法(求解任意两点间的最短路) 详解 + 变形 之 poj 2253 Frogger
- AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)
- Floyd-Warshall算法求任意两点间的最短路(图论算法)
- 任意两点的最短路问题 Floyd-Warshall算法
- 任意两点之间的最短路径问题(Floyd-Warshall算法)
- Floyd --任意两点之间的最短路问题
- 任意两点最短路 Floyd-Warshall算法 传递闭包
- 每日一题 No.50 任意二点间的最短路问题(Floyd-Warshall算法)
- 任意两点间的最短路径---floyd_warshall算法
- 2014东北农大校赛--D.Cross the middle (任意两点最短路径 Floyd)
- 图算法之Floyd-Warshall 算法-- 任意两点间最小距离
- floyd 任意两点最短路
- POJ - 2139 Six Degrees of Cowvin Bacon(任意两点最短路,Floyd)
- Cow Contest(POJ 3660)(Floyd)(任意两点间最短路)
- Numbering Paths 统计任意两点间路的数量 小范围数据floyd变体