hdu 2066 一个人的旅行(dijkstra 多个起点和终点)
2014-03-03 21:58
363 查看
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2066
dijkstra函数每执行一次,得到的dis数组存储的是起点s到其他所有点的距离需要执行s次函数,每次函数分别求出到想去的点的距离的最小值
#include <iostream> #include <fstream> #include <cstring> using namespace std; const int N = 1200; const int INF = 0x3f3f3f3f; int map , dis , vis , from , want , t, s, d; int dijkstra(int s) { memset(vis, 0, sizeof(vis)); for(int i = 0; i < N; i++) dis[i] = INF; dis[s] = 0; int _min, pos; for(int i = 0; i < N; i++) { _min = INF; for(int j = 0; j < N; j++) { if(!vis[j] && _min > dis[j]) { pos = j; _min = dis[j]; } } vis[pos] = 1; for(int j = 0; j < N; j++) if(!vis[j] && map[pos][j] + dis[pos] < dis[j]) dis[j] = map[pos][j] + dis[pos]; } _min = INF; for(int i = 0; i < d; i++) _min = min(_min, dis[want[i]]); return _min; } int main(void) { // freopen("1.txt", "r", stdin); // freopen("2.txt", "w", stdout); while(scanf("%d%d%d", &t, &s, &d) != EOF) { for(int i = 0; i < N; i++) for(int j = 0; j < N; j++) map[i][j] = INF; int a, b, time; for(int i = 0; i < t; i++) { scanf("%d%d%d", &a, &b, &time); if(map[a][b] > time) map[a][b] = map[b][a] = time; } for(int i = 0; i < s; i++) scanf("%d", &from[i]); for(int i = 0; i < d; i++) scanf("%d", &want[i]); int _min = INF; for(int i = 0; i < s; i++) _min = min(_min, dijkstra(from[i])); printf("%d\n", _min); } return 0; }
相关文章推荐
- (阶段三 dijkstra算法温习1.2)HDU 2066 一个人的旅行(使用dijkstra来解决多源起点和多源终点的最短路径问题)
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- HDU 2066 一个人的旅行【最短路,多起点多终点,Dijkstra算法+spfa算法】
- 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-OJ 杭电2066 一个人的旅行——dijkstra
- HDU2066 一个人的旅行【Dijkstra】
- HDU - 2066 一个人的旅行(Dijkstra)
- 一个人的旅行(http://acm.hdu.edu.cn/showproblem.php?pid=2066)SPFA||dijkstra
- HDU 2066 一个人的旅行(dijkstra)
- HDU 2066 一个人的旅行(Dijkstra,建图很巧妙)
- HDU 2066-一个人的旅行(Dijkstra)
- hdu 2066 一个人的旅行(Dijkstra)