博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2544-最短路(最短路spfa)
阅读量:5139 次
发布时间:2019-06-13

本文共 1480 字,大约阅读时间需要 4 分钟。

最短路

Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 32726    Accepted Submission(s): 14223


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条商店到赛场的路线。
 

Output
对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间
 

Sample Input
 
2 1 1 2 3 3 3 1 2 5 2 3 5 3 1 2 0 0
 

Sample Output
 
3 2
听ysj说spfa秒杀一切。。
#include 
#include
#include
#include
#include
#include
using namespace std;const int INF=1<<27;const int maxn=100010;int n,m,dis[1100];vector< pair
> eg[maxn];bool inq[1100];void spfa(int src){ queue
Q; for(int i=0;i<=n;i++){dis[i]=INF;inq[i]=0;} dis[src]=0; Q.push(src); while(!Q.empty()) { int u=Q.front();Q.pop(); inq[u]=0; for(int i=0;i
dis[u]+w) { dis[v]=dis[u]+w; if(!inq[v]) { inq[v]=1; Q.push(v); } } } }}int main(){ while(~scanf("%d%d",&n,&m)) { if(!n&&!m)break; for(int i=0;i<=n;i++) eg[i].clear(); while(m--) { int u,v,w; scanf("%d%d%d",&u,&v,&w); eg[u].push_back(make_pair
(v,w)); eg[v].push_back(make_pair
(u,w)); } spfa(1); printf("%d\n",dis[n]); } return 0;}

转载于:https://www.cnblogs.com/mfrbuaa/p/4276445.html

你可能感兴趣的文章
[CareerCup] 2.3 Delete Node in a Linked List 删除链表的节点
查看>>
[LeetCode] Find K Pairs with Smallest Sums 找和最小的K对数字
查看>>
左右轮播无缝效果
查看>>
HTML 链接是通过 <a> 标签进行定义的
查看>>
Cocos2d Box2D之静态刚体
查看>>
UDP和TCP两种协议的传输数据长度分析
查看>>
ppt 例题8 多重背包2
查看>>
倒序--逆序=2
查看>>
Java中的Nested Classes和Inner Classes
查看>>
自动创建文件夹的两种方法
查看>>
graphviz入门
查看>>
[Js-Java SE]异常结构继承图
查看>>
信度不达标的处理方式
查看>>
微信小程序数据处理
查看>>
50个有用的快捷键,提示与蜱虫你应该知道
查看>>
Func<>
查看>>
SpringBoot 整合 devtools 实现热部署
查看>>
Javascript 异步加载详解
查看>>
【js基础修炼之路】— 我理解的原型链
查看>>
Qt学习(4)
查看>>