最短路路径还原
2014-10-13 23:42
141 查看
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define inf 100000 using namespace std; int n, m, d[100], pre[100], dis[100][100]; bool vis[100]; int main(){ int i, j; while(scanf("%d%d", &n, &m) == 2){ memset(vis, 0, sizeof(vis)); memset(pre, -1, sizeof(pre)); for(i = 1; i <= n; i++) d[i] = inf; for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) dis[i][j] = inf; int a, b, c; for(i = 1; i <= m; i++){ scanf("%d%d%d", &a, &b, &c); dis[a][b] = dis[b][a] = min(c, dis[a][b]); } d[1] = 0; while(1){ int decide = -1; for(i = 1; i <= n; i++) if(!vis[i]) if(decide == -1 || d[i] < d[decide]) decide = i; if(decide == -1) break; for(i = 1; i <= n; i++){ if(!vis[i] && i!=decide){ if(d[i] > d[decide]+dis[decide][i]){ pre[i] = decide; d[i] = d[decide]+dis[decide][i]; } } } vis[decide] = 1; } int pp = n; int ans[100], tot = 0; while(pp != -1){ ans[++tot] = pp; pp = pre[pp]; } for(i = tot; i >= 1; i--) printf("%d ", ans[i]); printf("\n"); } return 0; }
相关文章推荐
- [单源最短路+路径还原]城市交通路网 HUSTOJ2813
- Bellman Ford+SPFA队列优化(路径还原 输出最短路的路径)
- Dijkstra-路径还原 输出最短路的路径
- UVA 10537 The Toll! Revisited(最短路变形+输出字典序最小路径)
- HDU 1385Minimum Transport Cost 最短路输出路径
- 如何在MONO 3D寻找最短路路径
- *HDU 1385 最短路 路径
- 算法笔记---最短路路径之Floyd(弗洛伊德)算法
- HDOJ 1385 Minimum Transport Cost (最短路 Floyd & 路径记录)
- POJ2457 Part Acquisition(Spfa最短路+记录路径)
- hdu3790 最短路径问题 很好的双限制最短路
- 最短路(最短路径)
- HDU - 1385 Minimum Transport Cost (最短路dijkstra+打印字典序最小路径)
- 路径还原
- 求经过路径最少的最短路
- NYOJ564 & CSU 1106 最优对称路径【记忆化搜索+最短路】
- ZOJ 2760--How Many Shortest Path【dinic最大流 && 最短路构图 && 求最短路径的条数】
- POJ 3216 Repairing Company 最少路径覆盖+floyd最短路
- 迷宫的最短路路径
- HDU 3790 最短路径问题【最短路 dijkstra 双权值】