HDU 2066 dijkstra 最短路径
来源:互联网 发布:java snmp 编辑:程序博客网 时间:2024/06/01 07:58
C - 一个人的旅行
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
有重边!
ACcode:
#pragma warning(disable:4786)//使命名长度不受限制#pragma comment(linker, "/STACK:102400000,102400000")//手工开栈#include <map>#include <set>#include <queue>#include <cmath>#include <stack>#include <cctype>#include <cstdio>#include <cstring>#include <stdlib.h>#include <iostream>#include <algorithm>#define rd(x) scanf("%d",&x)#define rd2(x,y) scanf("%d%d",&x,&y)#define rds(x) scanf("%s",x)#define rdc(x) scanf("%c",&x)#define ll long long int#define maxn 1111#define mod 1000000007#define INF 0x3f3f3f3f //int 最大值#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;++i)#define MT(x,i) memset(x,i,sizeof(x))#define PI acos(-1.0)#define E exp(1)using namespace std;bool vis[maxn];int pre[maxn],cost[maxn][maxn],lowcost[maxn],aa[maxn],bb[maxn];void dijkstra(int n,int beg){ FOR(i,0,n){lowcost[i]=INF;vis[i]=false;pre[i]=-1;} lowcost[beg]=0; FOR(j,1,n){ int k=-1;int min=INF; FOR(i,1,n) if(!vis[i]&&lowcost[i]<min){ min=lowcost[i]; k=i; } if(k==-1)break; vis[k]=true; FOR(i,1,n) if(!vis[i]&&lowcost[k]+cost[k][i]<lowcost[i]){ lowcost[i]=lowcost[k]+cost[k][i]; pre[i]=k; } }}int t,s,d,a,b,c,ans,n;int main(){ while(scanf("%d%d%d",&t,&s,&d)!=EOF){ MT(cost,INF);n=-INF; FOR(i,1,t){ rd2(a,b);rd(c); if(c<cost[a][b]) cost[a][b]=cost[b][a]=c; n=max(max(a,b),n); } FOR(i,1,s)rd(aa[i]); FOR(i,1,d)rd(bb[i]); ans=INF; FOR(i,1,s){ dijkstra(n,aa[i]); FOR(i,1,d)ans=min(ans,lowcost[bb[i]]); } printf("%d\n",ans); } return 0;}/*6 2 31 3 51 4 72 8 123 8 44 9 129 10 21 28 9 10*/
0 0
- hdu 2066最短路径(Dijkstra算法)
- hdu 2066 最短路径Dijkstra算法
- HDU 2066 dijkstra 最短路径
- 【最短路径dijkstra算法】HDU 2066---一个人的旅行
- hdu 2066 一个人的旅行(最短路径 Dijkstra算法)
- hdu 2066 一个人的旅行 最短路径dijkstra算法
- hdu 1874 最短路径dijkstra
- 最短路径 Dijkstra 算法 HDU 3790
- HDU 3790 最短路径问题(Dijkstra)
- HDU--3790最短路径问题 【Dijkstra】
- hdu 3790 最短路径问题(Dijkstra)
- HDU 3790:最短路径问题【Dijkstra】
- HDU-3790 最短路径问题(Dijkstra)
- HDU Today Dijkstra 最短路径
- HDU 3790 最短路径问题(dijkstra)
- 最短路径 Dijkstra
- 最短路径-Dijkstra
- Dijkstra 最短路径
- IO概述
- Android中Activity的切换动画
- Java中 instanceof 关键字
- 拖动更改panel控件大小
- setTimeout和setInterval
- HDU 2066 dijkstra 最短路径
- Redis简明教程-要点
- VS2012程序打包部署详解
- JSTL fn函数中字符串拼接
- json2
- linux的退出问题
- linux服务器上同时运行tomcat + apache centos搭建java+php
- iOS UITextField简介 —— HERO博客
- #学习笔记#(2)引用外部CSS