hdu 2680 (Dijkstra)

快放暑假了,训练又要开始了。先从熟悉的图论开始做吧。

题意:一张有向图中有若干起点一个终点,让你算最短路,方法很简单只需人为加一个起点指向所有起点让后距离为0即可。

代码如下:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <algorithm>
 4 #include <set>
 5 #include <iostream>
 6 #include <queue>
 7 #include <map>
 8 #include <math.h>
 9 #include <string>
10 #define MP(a, b) make_pair(a, b)
11 #define PB(a) push_back(a)
12 using namespace std;
13
14 typedef pair<int, int> pii;
15 const int LEN = 1010;
16 const int INF = 0x3f3f3f3f;
17 vector<pii> Map[LEN];
18 int n, m, dis[LEN];
19
20 void Dijkstra(int vex){
21     int vis[LEN] = {0};
22     priority_queue<pii, vector<pii>, greater<pii> > q;
23     for(int i=0; i<=n; i++) dis[i] = INF;
24     dis[vex] = 0;
25     q.push(MP(dis[vex], vex));
26     while(!q.empty()){
27         pii nvex = q.top(); q.pop();
28         int nv = nvex.second;
29         if(vis[nv]) continue;
30         vis[nv] = 1;
31         for(int i=0; i<Map[nv].size(); i++){
32             int x = Map[nv][i].first, y = Map[nv][i].second;
33             if(dis[x] > dis[nv] + y){
34                 dis[x] = dis[nv] + y;
35                 q.push(MP(dis[x], x));
36             }
37         }
38     }
39 }
40
41 int main()
42 {
43 //    freopen("in.txt", "r", stdin);
44
45     int a, b, c, tn, s, e;
46     while(scanf("%d%d%d", &n, &m, &e)!=EOF){
47         for(int i=0; i<LEN; i++) Map[i].clear();
48         for(int i=0; i<m; i++){
49             scanf("%d%d%d", &a, &b, &c);
50             Map[a].PB(MP(b, c));
51         }
52         scanf("%d", &tn);
53         for(int i=0; i<tn; i++){
54             scanf("%d", &s);
55             Map[0].PB(MP(s, 0));
56         }
57         Dijkstra(0);
58         if(dis[e] != INF) printf("%d\n", dis[e]);
59         else puts("-1");
60     }
61     return 0;
62 }

hdu 2680 (Dijkstra),布布扣,bubuko.com

时间: 2024-10-07 07:05:54

hdu 2680 (Dijkstra)的相关文章

hdu 2680 最短路径(dijkstra算法+多源最短路径单源化求最小值)

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 7062    Accepted Submission(s): 2301 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

HDU 2112 HDU Today (Dijkstra算法)

HDU Today Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13952    Accepted Submission(s): 3264 Problem Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候

hdu 2680 Choose the best route 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目意思:实质就是给定一个多源点到单一终点的最短路. 卑鄙题---有向图.初始化map时 千万不要写成 map[i][j] = map[j][i] = X. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 using namespac

hdu 1548 (dijkstra解法)(一次AC就是爽)

恭喜福州大学杨楠获得[BestCoder Round #4]冠军(iPad Mini一部) <BestCoder用户手册>下载 A strange lift Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11670    Accepted Submission(s): 4430 Problem Description There is

HDU 2680 Choose the best route(最短路)

Choose the best route Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 2680 Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at

hdu 2680 最短路基础题 spfa实现 算法总结

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目大意,就是一个人可以从多个起点开始出发,看到终点的最短路是多少..只有可以运用和hdu2066一样的思想,对于每个起点可以看成是跟最最开始的点之间有一条权值为0的边.可以把最开始的点记做0点.那这样就可以使用单源最短路了.之前都没有用过spfa,今天来运用了一下. 算法大致流程是用一个队列来进行维护.初始时将源加入队列.每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松

hdu 2680 Choose the best route 大年三十的首A 赤裸裸的Dijkstra 做这题需要一个小技巧

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8063    Accepted Submission(s): 2655 Problem Description One day , Kiki wants to visit one of her friends. As she is liable

HDU 2680 Choose the best route(dijkstra+优先队列优化)

Choose the best route Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsickness , she wants to arrive at her friend’s home as soon as possible . Now give you a map of the city’s traffic route, and the stati

hdu 2680 Choose the best route (Dijkstra &amp; 反向图)

Choose the best route Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7764    Accepted Submission(s): 2581 Problem Description One day , Kiki wants to visit one of her friends. As she is liable