hdu-最短路
来源:互联网 发布:iptables 屏蔽域名 编辑:程序博客网 时间:2024/05/12 12:40
http://acm.hdu.edu.cn/showproblem.php?pid=2544
Problem Description
在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?
Input
输入包括多组数据。每组数据第一行是两个整数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条商店到赛场的路线。
输入保证至少存在1条商店到赛场的路线。
Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
Sample Input
2 11 2 33 31 2 52 3 53 1 20 0
Sample Output
32
这道题看了别人的博客,找了网上的模板,对着网上的模板一点一点的写,终于算是明白了些!
#include<iostream>#include<cstdio>#define N 10004#define M 100008000using namespace std;int n,m;int map[N][N];//保存某两个节点中的权值,例如map[2][5]表示的是节点2到5的距离int s[N];//标记是否走过,1表示走过,0表示未走过int dis[N];//表示从某节点到1的值void dijkstra(int n){ int i,j,temp,te,u; for(i=1;i<=n;i++) { dis[i]=map[1][i]; s[i]=0; } s[1]=1; dis[1]=0; for(i=2;i<=n;i++) { temp=M; u=1; for(j=2;j<=n;j++) { if(!s[j]&&dis[j]<temp) { u=j; temp=dis[j]; } } s[u]=1;// 我们每次寻找的那个点都是以上个节点为起点的最小点 for(j=2;j<=n;j++) { if(!s[j]&&map[u][j]<M)//为什么要写<M呢,因为不是每个点都和你上步选中的点有直接的联系嘛 { te=map[u][j]+dis[u]; if(te<dis[j]) dis[j]=te; } } }}int main(){ int i,j,k; int a,b,c; while(scanf("%d%d",&n,&m)!=EOF) { if((n==0)&&(m==0)) break; for(i=1;i<=n;i++) { for(j=1;j<=n;j++) map[i][j]=M; dis[j]=M; } for(i=0;i<m;i++) { scanf("%d%d%d",&a,&b,&c); if(c<map[a][b]) { map[a][b]=c; map[b][a]=c; } } dijkstra(n); printf("%d\n",dis[n]); } return 0;}
- 最短路 2544hdu
- HDU 2544 最短路
- hdu 1245 最短路
- HDU最短路总结
- hDU 最短路
- hdu 1874 (最短路)
- hdu 2112 (最短路)
- HDU-2544 最短路
- Hdu-2544 最短路
- hdu 2066 最短路
- HDU 2544 最短路
- 最短路 hdu
- hdu 2544 最短路
- HDU 2544 ( 最短路 )
- hdu 2544 最短路
- HDU 2544 最短路
- hdu 2544 最短路
- hdu 2544 最短路
- datagridview控件--导出Excel
- hdu 2844 Coins (多重背包)
- poj 2251 搜索
- 数组讲解
- android监听事件添加动作的三种方式
- hdu-最短路
- 多校赛第三,第四场总结
- POJ-1149-PIGS
- 设计模式---命令模式
- sort排序
- Struts2配置精要之Result Types(Struts2.3.4)
- python IDLE的执行py文件
- Zend Framework 1 安装配置
- 【xinfanqie】美女&&逢泽莉娜win7主题_8.3