hdu 1874 (spfa)
来源:互联网 发布:淘宝天猫积分怎么获得 编辑:程序博客网 时间:2024/06/04 18:17
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
Hdu1874畅通工程续
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 23515 Accepted Submission(s): 8279
Problem Description
某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。
现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。
Input
本题目包含多组数据,请处理到文件结束。
每组数据第一行包含两个正整数N和M(0<N<200,0<M<1000),分别代表现有城镇的数目和已修建的道路的数目。城镇分别以0~N-1编号。
接下来是M行道路信息。每一行有三个整数A,B,X(0<=A,B<N,A!=B,0<X<10000),表示城镇A和城镇B之间有一条长度为X的双向道路。
再接下一行有两个整数S,T(0<=S,T<N),分别代表起点和终点。
Output
对于每组数据,请在一行里输出最短需要行走的距离。如果不存在从S到T的路线,就输出-1.
Sample Input
3 3 0 1 1 0 2 3 1 2 1 0 2 3 1 0 1 1 1 2
Sample Output
2 -1
思路:与hdu 3790一样 但更简单
//一开始不知道为什么调试不起 ,最后只好重打代码了,就通过了,无奈。。。
代码:
#include <iostream>#include <queue>#include<cstdio>#include<cstring>using namespace std;const int MAX = 210;const int INF = 20000;int map[MAX][MAX];int dis[MAX];bool used[MAX];int SPFA(int start,int end,int n){ int i; for(i=0;i<n;i++) { dis[i] = INF; } dis[start] = 0; queue <int> q; q.push(start); used[start] = 1; while(!q.empty()) { int mid; mid = q.front(); q.pop(); used[mid] = 0; for(i=0;i<n;i++) { if(map[mid][i] + dis[mid]< dis[i]) { dis[i] = map[mid][i] + dis[mid]; if(!used[i]) { q.push(i); used[i] = 1;//防止下一次此时的i再次存进队列中 } } } } return dis[end];}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i,j; for(i=0;i<MAX;i++) { for(j=0;j<MAX;j++) { map[i][j] = INF; } }//初始化map的值 memset(used,0,sizeof(used));//used数组代表是否访问过 for(i=0;i<m;i++) { int a,b,x; scanf("%d%d%d",&a,&b,&x); if(x < map[a][b]) { map[a][b]=x; map[b][a]=x; } } int s,t; scanf("%d%d",&s,&t); int x = SPFA(s,t,n);//储存结果 if(x<INF) printf("%d\n",x); else printf("-1\n"); } return 0;}
- hdu 1874 (spfa)
- hdu-1874 SPFA
- hdu 1874 (spfa)
- HDU 1874 SPFA
- SPFA HDU 1874模板
- HDU 2544 (SPFA)
- hdu 2433 Travel(spfa)
- HDU 2544(简单spfa)
- hdu - 1874 - 畅通工程续(Dijkstra / SPFA)
- hdu 1874 畅通工程续(spfa模板)
- HDU-#1874 畅通工程续(Dijkstra、Floyd、SPFA)
- hdu-1874-畅通工程续(dijkstra + SPFA )
- hdu 1874 畅通工程续(SPFA算法)
- (Dijstra + 优先队列,Floyd,BellmanFord,SPFA)HDU-1874
- hdu 2112 HDU Today(SPFA+map)
- hdu 1874 畅通工程续 (SPFA模板)
- HDU 1874 畅通工程续 dijkstra&&spfa
- HDU 1874 畅通工程续 <SPFA算法>
- combinations
- C has memset(), the Berkeley UNIX C library has bzero()
- 有效获取scrollWidth clientWidth方法:
- django POST获取字典
- 数据可视化-Python之Matplotlib
- hdu 1874 (spfa)
- window编程控件的基本使用
- 【连载一】漫谈投资机构对企业的估值(一)
- (code jam)Problem A. Store Credit
- 冒泡排序(随机生成10个数排序)
- 【连载八】移动医疗四大入口之大众入口(一)
- 服务端架构中的“网关服务器”
- 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍
- 【连载二】漫谈投资机构对企业的估值(二)