hdu - 2066 一个人的旅行(基础最短路)

http://acm.hdu.edu.cn/showproblem.php?pid=2066

把与草儿相连的城市最短距离置为0,然后进行dijkstra,在t个城市里找出距离最近的一个即可。

 1 #include <iostream>
 2 #include <vector>
 3 #include <queue>
 4 #include <cstdio>
 5 using namespace std;
 6
 7 const int maxn = 1010;
 8 const int INF = 1<<29;
 9 struct edge {
10     int to,cost;
11     edge(){}
12     edge( int x,int y ) {
13         to=x;
14         cost=y;
15     }
16 };
17
18 typedef pair<int,int>P;
19 vector<edge>G[maxn];
20 int d[maxn],s[maxn],e[maxn];
21 int T,S,D,n;
22
23 void dijkstra() {
24     priority_queue<P,vector<P>,greater<P> >que;
25     for(int i=1;i<=n;i++) d[i]=INF;
26     for(int i=1;i<=S;i++)
27     {
28         d[s[i]]=0;
29         que.push(P(0,s[i]));
30     }
31     while(!que.empty()) {
32         P p=que.top(); que.pop();
33         int v=p.second;
34         if(d[v]<p.first) continue;
35         for(int i=0;i<G[v].size();i++) {
36             edge e=G[v][i];
37             if(d[e.to]>d[v]+e.cost) {
38                 d[e.to]=d[v]+e.cost;
39                 que.push(P(d[e.to],e.to));
40             }
41         }
42     }
43 }
44
45 int main()
46 {
47     //freopen("a.txt","r",stdin);
48     while(~scanf("%d%d%d",&T,&S,&D))
49     {
50         for(int i=1;i<=maxn;i++) G[i].clear();
51         n=0;
52         int a,b,c,v;
53         for(int i=1;i<=T;i++)
54         {
55             scanf("%d%d%d",&a,&b,&c);
56          //   printf("%d %d %d\n",a,b,c);
57             G[a].push_back(edge(b,c));
58             G[b].push_back(edge(a,c));
59             if(a>n) n=a;
60             if(b>n) n=b;
61         }
62         for(int i=1;i<=S;i++) scanf("%d",&s[i]);
63         for(int i=1;i<=D;i++) scanf("%d",&e[i]);
64         dijkstra();
65         int ans=INF;
66         for(int i=1;i<=D;i++)
67             if(d[e[i]]<ans) ans=d[e[i]];
68         printf("%d\n",ans);
69
70     }
71     return 0;
72 }
时间: 2024-11-05 11:48:26

hdu - 2066 一个人的旅行(基础最短路)的相关文章

HDU 2066 一个人的旅行(最短路)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题面: 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22263    Accepted Submission(s): 7720 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会

hdu 2066 一个人的旅行 最短路径

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18399    Accepted Submission(s): 6394 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

hdu 2066 一个人的旅行(裸dijkstra)

http://acm.hdu.edu.cn/showproblem.php?pid=2066 求多源多汇的最短路,n最大为1000,floyd三重循环会超时.继续dijkstra吧. #include <stdio.h> #include <algorithm> #include <set> #include <map> #include <vector> #include <math.h> #include <string.h

hdu 2066 一个人的旅行 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题目意思:给出T条路,和草儿家相邻的城市编号,以及草儿想去的地方的编号.问从草儿家到达草儿想去的地方的最短时间是多少. 一开始自己写的只能处理单边出发的情况,对于以下这幅图,只能处理箭头所示的方向,不能向下,于是不知道为什么出现了百年难得一遇的Runtime Error(ACCESS_VIOLATION)! 10 2 31 3 53 8 42 5 25 8 31 4 74 9 129 10 2

HDU 2066 一个人的旅行(Dijstra)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 18671    Accepted Submission(s): 6505 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰

hdu 2066 一个人的旅行(Dijkstra)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰富自己的阅历,还可以看美丽的风景--草儿想去很多地方,她想要去东京铁塔看夜景,去威尼斯看电影,去阳明山上看海芋,去纽约纯粹看雪景,去巴黎喝咖啡写信,去北京探望孟姜女--眼看寒假就快到了,这么一大段

HDU 2066 一个人的旅行(SPFA +Floyd-Warshall算法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24385    Accepted Submission(s): 8460 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里

hdu 2066 一个人的旅行 Dijkstra

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2066 题意分析:以草儿家为原点,给出城市间相互抵达的时间,给出草儿想去的城市,求最短时间.典型的单源最短路问题,直接用Dijkstra即可,无需优化也可.需要注意的地方是:直接和草儿家相连的城市,时间可以算为0. 另外,题目强调可以有多条路径,所以要注意选取其中最短的一条. /*一个人的旅行 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 3

hdu 2066 一个人的旅行(简单的Dijkstra)

一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 24053    Accepted Submission(s): 8364 Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中 会遇见很多人(白马王子,^0^),很多事,还能丰