HDOJ 2066 一个人的旅行(最短路之SPFA)
2015-08-19 17:38
507 查看
一个人的旅行
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 24848 Accepted Submission(s): 8627
[align=left]Problem Description[/align]
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
[align=left]Input[/align]
输入数据有多组,每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
[align=left]Output[/align]
输出草儿能去某个喜欢的城市的最短时间。
[align=left]Sample Input[/align]
6 2 3
1 3 5
1 4 7
2 8 12
3 8 4
4 9 12
9 10 2
1 2
8 9 10
[align=left]Sample Output[/align]
9
[align=left]Author[/align]
Grass
[align=left]Source[/align]
RPG专场练习赛
//多个出发点,多个终点,做法就是将多个起点看做一个起点,将距离都设为0,和spfa的模板有点不同,需要做的是首先找到出发点,存储到队列里,在进行一一比较,之后
//选出最短距离
#include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespace std; #define maxn 1000+10 #define maxm 0x3f3f3f int map[maxn][maxn],sign[maxn],dis[maxn]; int n,m,s,N; queue<int>Q; void init(int m) { int k; memset(sign,0,sizeof(sign)); while (!Q.empty()) Q.pop(); for (int i=0;i<m;i++) { scanf ("%d",&k); dis[k]=0; if (!sign[k]) Q.push(k); sign[k]=1; } } void spfa() { int i,j; while (!Q.empty()) { int u=Q.front(); Q.pop(); sign[u]=0; for (i=1;i<=N;i++) { if (map[u][i]) { if (dis[i]>dis[u]+map[u][i]) { dis[i]=dis[u]+map[u][i]; if (!sign[i]) { Q.push(i); sign[i]=1; } } } } } } int main() { int i,j; while (scanf ("%d%d%d",&n,&m,&s)!=EOF) { memset(map,0,sizeof(map)); N=-1; int a,b,c; for (i=0;i<n;i++) { scanf ("%d%d%d",&a,&b,&c); N=max(max(N,a),b); if (map[a][b]>c||map[a][b]<=0) map[a][b]=map[b][a]=c; } for (i=1;i<=N;i++) dis[i]=maxm; init(m); spfa(); int minp=maxm; while (s--) { scanf ("%d",&a); minp=min(minp,dis[a]); } printf("%d\n",minp); } return 0; }
相关文章推荐
- 监听textfield输入的长度
- EL表达式的使用及编写和使用EL表达式的自定义函数
- 禁止浏览器直接url访问action
- Android studio 使用总结 (乱七八糟的细节)
- 将webkit内核封装为duilib的浏览器控件
- Oracle 在线文档
- Redis
- resource net/sf/antcontrib/antlib.xml. It could not be found.
- 金蝶K3无法创建数据库,请查看该文件夹的错误的解决方法。
- SQL JOIN
- [转]Centos6.5使用yum安装mysql—配置MySQL允许远程登录
- 【VMCloud云平台】SCOM进阶篇-全球监视器
- iOS获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?
- 十大经典数据挖掘算法之SVM算法
- Spring整合Quartz(JobDetailBean方式)
- 黑马程序员——IO(对象序列化、管道流、其他流对象)
- JavaScript——关于列表权重的笔试题
- sed和awk等方法实现列转成行
- 高手支招:快速刷新注册表 不用关机重启
- LINUX安装Oracle11G数据库