hdu 2544 最短路(dijkstra)
2015-08-18 10:03
363 查看
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 42811 Accepted Submission(s): 18764
[align=left]Problem Description[/align]
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?
[align=left]Input[/align]
输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
输入保证至少存在1条商店到赛场的路线。
[align=left]Output[/align]
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
[align=left]Sample Input[/align]
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
[align=left]Sample Output[/align]
3 2 分析都在注释里了
#include"iostream" #include"algorithm" #include"cstring" #include"cstdio" #define inf 0x3f3f3f using namespace std; const int maxn=104; int map[maxn][maxn]; bool vis[maxn]; int dis[maxn]; int m,t,n; void findmin(){ int minn,pos; for(int i=1;i<=n;i++)//原始的数组存储的是有路口1到路口i的这直接距离,如果没有直接通路,为inf { dis[i]=map[1][i]; } for(int i=1;i<=n;i++)//每经历一次循环,寻找出一个由1到i的最短距离 { minn=inf; for(int j=2;j<=n;j++) if(!vis[j]&&dis[j]<minn)//找出未确定的距离中最小的一个min,改值即为由1到pos的最短距离 { minn=dis[j]; pos=j; } vis[pos]=true; for(int j=2;j<=n;j++) if(!vis[j]&&dis[pos]+map[pos][j]<dis[j])//更新与pos连同的点的距离,使其相对最小 dis[j]=dis[pos]+map[pos][j]; } } int main(){ while(scanf("%d %d",&n,&m)==2){ if(n==0&&m==0) break; for(int i=1;i<maxn;i++){ dis[i]=inf; for(int j=1;j<maxn;j++) map[i][j]=inf; memset(vis,false,sizeof(vis)); } int p,q; for(int i=1;i<=m;i++){ scanf("%d %d %d",&p,&q,&t); if(t<map[p][q]){ map[p][q]=t; map[q][p]=map[p][q]; } } findmin(); cout<<dis <<endl; } }
相关文章推荐
- 编写健壮的Bash shell脚本
- SDWebImage的使用
- Google Guice使用入门(转)
- EmberJs之数组绑定@each&[]
- linux系统性能调优第一步——性能分析(vmstat)
- ARC与MRC的性能对比
- MFC程序最小化右下角托盘的实现
- IDictionary遍历删除
- HDU 1004 Let the Balloon Rise
- swift中使用CocoaPods
- 关于windowsOS下和linuxOS之间的socket通信
- ubuntu挂载新硬盘
- 带浮动层的ExpandableListView
- poj-2442-Sequence-优先队列||堆
- 解决IllegalStateException: Can not perform this action after onSaveInstanceState
- C++中 map容器的介绍
- Codeforces Round #315 (Div. 2) D. Symmetric and Transitive
- 2015-08-17 小结
- MyBatis :Insert (返回主键、批量插入)
- Jquery动画第一部分