HDU 一个人的旅行(Dijkstra)
来源:互联网 发布:守望先锋各个性能数据 编辑:程序博客网 时间:2024/06/17 01:29
B - 一个人的旅行
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription
虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景……草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女……眼看寒假就快到了,这么一大段时间,可不能浪费啊,一定要给自己好好的放个假,可是也不能荒废了训练啊,所以草儿决定在要在最短的时间去一个自己想去的地方!因为草儿的家在一个小镇上,没有火车经过,所以她只能去邻近的城市坐火车(好可怜啊~)。
Input
输入数据有多组,每组的第一行是三个整数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个数,表示草儿想去地方。
接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=<(a,b)<=1000;a,b 之间可能有多条路)
接着的第T+1行有S个数,表示和草儿家相连的城市;
接着的第T+2行有D个数,表示草儿想去地方。
Output
输出草儿能去某个喜欢的城市的最短时间。
Sample Input
6 2 31 3 51 4 72 8 123 8 44 9 129 10 21 28 9 10
Sample Output
9#include <iostream>#include <stdlib.h>#include <stdio.h>#include <string.h>#define MAX 9999999using namespace std;int t,s,d;int rr;int a[1001][1001],v[1000001],b[1000001];int p[1000001],q[1000001];int Dijkstra(int n){ int i,j,k; memset(b,0,sizeof(b)); for(i=0;i<1000001;i++) v[i]=MAX; for(i=0;i<=rr;i++) v[i]=a[n][i]; v[n]=0; b[n]=1; int min2=MAX; for(i=1;i<rr;i++) { min2=MAX; for(j=1;j<=rr;j++) { if(!b[j]&&min2>v[j]) { min2=v[j]; k=j; } } b[k]=1; for(j=1;j<=rr;j++) { if(!b[j]&&v[j]>v[k]+a[k][j]) v[j]=v[k]+a[k][j]; } } int sum=MAX; for(i=0;i<d;i++) { if(sum>v[q[i]]) sum=v[q[i]]; } return sum;}int main(){ int i,j; while(~scanf("%d%d%d",&t,&s,&d)) { for(i=0;i<1001;i++) { for(j=0;j<1001;j++) { a[i][j]=a[j][i]=MAX; } a[i][i]=0; } int x,y,m; rr=0; int dd=0; for(i=0;i<t;i++) { scanf("%d%d%d",&x,&y,&m); if(a[x][y]>m) { a[x][y]=a[y][x]=m; } if(x>y) dd=x; else dd=y; if(dd>rr) rr=dd; } for(i=0;i<s;i++) scanf("%d",&p[i]); for(i=0;i<d;i++) scanf("%d",&q[i]); int min1=MAX; for(i=0;i<s;i++) { int w=Dijkstra(p[i]); if(min1>w) min1=w; } printf("%d\n",min1); } return 0;}
0 0
- HDU 2066 一个人的旅行(Dijkstra)
- HDU 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(dijkstra)
- hdu-2066-一个人的旅行(dijkstra)
- HDU 2066 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(dijkstra)
- HDU 2066 一个人的旅行(Dijkstra)
- HDU 2066 一个人的旅行(dijkstra)
- hdu 2066 一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(Dijkstra)
- hdu-2066-一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(简单的Dijkstra)
- 【hdu 2066】 一个人的旅行 ( 最短路 Dijkstra)
- HDU-#2066 一个人的旅行(Floyd & Dijkstra)
- HDU 2066-一个人的旅行(最短路Dijkstra)
- hdu 2066 一个人的旅行 (Dijkstra算法)
- Hdu 2066 一个人的旅行(dijkstra算法)
- HDU 六度分离(Floyd)
- 杭电 2067
- 网页生成工具,图片格式转换,文件夹相关
- hdu2099 整除的尾数
- ORACLE DG 激活 activate database
- HDU 一个人的旅行(Dijkstra)
- 快速幂取模
- 如何解决…has been modified since the precompiled header… was built的问题
- linux 下查看java安装目录
- poj 1276 Cash Machine(多重背包)
- C# OFFICE WORD EXCEL操作
- oracel dg日常管理
- 一个人的旅行——最短路
- tlb与dll文件