hdu-2544 最短路(SPFA做法)
2015-08-19 23:35
471 查看
最短路
Time Limit : 5000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 83 Accepted Submission(s) : 51
[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
[align=left]Source[/align]
UESTC 6th Programming Contest Online
# include<queue> # include<stack> # include<cstdio> # include<cstring> # include<algorithm> # define INF 0x3f3f3f3f # define MAXM 10000 +100 using namespace std; int n, m; int cnt; int vis[MAXM]; int dist[MAXM]; int head[MAXM]; struct node { int from, to, val, next; }p[MAXM]; void init() { cnt = 0; memset(vis, 0, sizeof(vis)); memset(dist, INF, sizeof(dist)); memset(head, -1, sizeof(dist)); } void add(int u, int v, int w) { p[cnt].from = u; p[cnt].to = v; p[cnt].val = w; p[cnt].next = head[u]; head[u] = cnt; cnt++; }//邻接表的建立,想不通时就多代数据模拟 void get() { int a, b, c; while(m--) { scanf("%d%d%d",&a,&b,&c); add(a, b, c); add(b, a, c); } } void spfa(int ps) { vis[ps] = 1; dist[ps] = 0; queue<int>Q; Q.push(ps); while(!Q.empty()) { int u = Q.front(); Q.pop(); vis[u] = 0;//切记要将他赋值为0 for(int i = head[u]; i != -1; i = p[i].next)//对u点进行遍历 { int v = p[i].to; if(dist[v] > dist[u] + p[i].val) { dist[v] = dist[u] + p[i].val; if(!vis[v]) { vis[v] = 1; Q.push(v); } } } } printf("%d\n",dist ); } int main() { while(scanf("%d%d",&n,&m)&&n!=0&&m!=0) { init(); get(); spfa(1); } return 0; }
相关文章推荐
- uva 10321 - Polygon Intersection(几何)
- Meter Bus解析4:升压斩波电路
- HDOJ 1789 Doing Homework again (贪心&&优先队列)
- Struts2-Ajax无刷新显示信息
- [RFC] drm/exynos: add FIMC driver
- 使用 IIS 过程中遇到的一些问题
- 服务器端启动soket多线程
- iOS项目开发实战——多个视图的平移动画与闭包函数的声明与调用
- BZOJ2090 : [Poi2010]Monotonicity 2
- OPENCV2 图像修复 — 去除文字(下)
- 人民币小写转换为大写
- uva 10867 - Cutting a Polygon(几何)
- java内存结构(运行时数据区域)
- Nginx 是前端工程师的好帮手
- shell脚本那点事儿(1-2)
- Java-Thread (线程)
- Maven常用命令
- 迷茫中的启蒙之路(特别适合有心无力的小白,站长推荐)
- tar打包排除某个目录
- ajax+json+java