最短路径+Dijkstra+打印路径
来源:互联网 发布:南通seo招聘 编辑:程序博客网 时间:2024/06/01 09:36
2763--最短路径
Description
魔法师甘道夫家住A城,他收到B城国王的邀请参加一个重要会议,已知A城到B城中间有n-2个城城市,为了尽快达到目的地,甘道夫通过水晶球了解到A城到B城的地图,图上显示了n个城镇之间的连接(仅仅考虑单向的路,即考虑第i个城只考虑与后面城的连接的路)和距离。
请你编个程序找出最短的路径
Input
第一行 n 表示从A到B的n个城市 1 表示城A n表示城B
第二行到第n+1 行 每行 n个数字
(第i+1行,表示 第i个城市与其他城市之间的连接关系 0 表示不连接 其他数字表示连接的距离 )
Output
第一行 一个数字 最短距离
第二行 n个用空格间隔的整数 表示所选的线路
Sample Input
70 3 5 0 0 0 00 0 0 7 8 6 00 0 0 0 4 5 00 0 0 0 0 0 40 0 0 0 0 0 70 0 0 0 0 0 60 0 0 0 0 0 0
Sample Output
141 2 4 7
#include <cstdio>#include <cstring>#include <algorithm>const int N = 1100; const int inf = 99999999; int cost[N][N],path[N]; int d[N],n,y,a[N]; bool deleted[N]; void Shortest_path(){ for(int i=1;i<=n;i++) { d[i]=inf; deleted[i]=false; } d[1]=0; for(int i=1;i<=n;i++) if(cost[1][i]) { d[i]=cost[1][i]; }deleted[1]=true;a[y=0]=1;while(true){int min=inf,x;for(int i=1;i<=n;i++) if(!deleted[i]&&d[i]<min) {min=d[i];x=i;} if(min==inf) break;//printf("%d\n",x);deleted[x]=true;for(int i=1;i<=n;i++) if(!deleted[i]&&cost[x][i]){if(d[x]+cost[x][i]<d[i]){d[i]=d[x]+cost[x][i]; a[i]=x; }} }printf("%d\n",d[n]);int k=0;path[k]=n;while(path[k]!=1){k++;path[k]=a[path[k-1]];}for(int i=k;i>=0;i--)if(path[i])printf("%d ",path[i]); }int main() { int c,i,j; while(scanf("%d",&n),n) {memset(cost,0,sizeof(cost)); for( i=1;i<=n;i++)for(j=1;j<=n;j++){scanf("%d",&c);if(c>0){cost[i][j]=c;cost[j][i]=c;}}Shortest_path(); } return 0;}
- 最短路径+Dijkstra+打印路径
- 最短路径 Dijkstra
- 最短路径-Dijkstra
- Dijkstra 最短路径
- Dijkstra 最短路径。
- 最短路径dijkstra
- 最短路径 Dijkstra
- Dijkstra最短路径
- Dijkstra 最短路径
- 最短路径 dijkstra
- dijkstra最短路径
- Dijkstra最短路径
- 最短路径-Dijkstra
- 最短路径 【Dijkstra】
- 最短路径dijkstra
- 最短路径-Dijkstra
- 最短路径--dijkstra
- Dijkstra 最短路径
- do...while(0)的妙用
- ab测试tomcat并发性能(测试BIO与NIO差别)(一)
- BFS+剪枝--hdoj1195(不错)
- windows8和windowsserver2012不联网安装.net3.5(包括2.0和3.0)
- ccny_vision compiling on ros-fuerte
- 最短路径+Dijkstra+打印路径
- 三十分钟掌握STL
- cocos2dx 自己画图
- centos 下配置subversion(svn 以svnserve模式运行)
- cocos2d-x+Tiledmap中实现自由跳跃和移动
- Hdu 3887 Counting Offspring \ Poj 3321 Apple Tree \BZOJ 1103 [POI2007]大都市meg
- POJ 2498 Martian Mining
- 系统重装 三种系统安装方法,图文教程,详细讲解,附带系统工具和系统
- IOS cocos2d学习笔记-<二>CCScene、CCLayer、CCSprite的关系