HDU 2066 最短路
来源:互联网 发布:驾校坡道数据 编辑:程序博客网 时间:2024/06/13 00:01
/* 这个题目只要看成是草儿所在的城市到各点的单源最短路径就可以了 所以把草儿所在的城市标记为0 但要注意的是和草儿邻近的城市不需要坐火车的,所以花费的时间为0 只要用Dijkstra算法就可以了*/#include<iostream>using namespace std;const int maxn = 1000000;int f[1002][1002], ct[1002], wt[1002], dis[1002];bool vis[1002];int t, s, d, n;void dij(){ for(int i = 0; i <= n; i++) dis[i] = f[0][i]; vis[0] = true; while(true) { int Min = maxn, mj = -1; for(int i = 0; i <= n; i++) if(!vis[i] && dis[i]<Min) Min = dis[i], mj = i; if(mj==-1 || mj==n) break; vis[mj] = true; for(int i = 0; i <= n; i++) if(!vis[i] && dis[i]>dis[mj]+f[mj][i]) dis[i] = dis[mj]+f[mj][i]; }}int main(){ while(cin >> t >> s >> d) { n = -maxn; for(int i = 0; i < 1002; i++) { dis[i] = maxn; vis[i] = false; for(int j = 1; j < 1002; j++) if(i != j) f[i][j] = f[j][i] = maxn; else f[i][j] = 0; } for(int i = 1; i <= t; i++) { int a, b, c; cin >> a >> b >> c; if(a > n) n = a; if(b > n) n = b;//用来找到编号最大的城市 if(f[a][b] > c) f[a][b] = f[b][a] = c; } for(int i = 1; i <= s; i++) { cin >> ct[i]; f[0][ct[i]] = f[ct[i]][0] = 0;//邻近城市花费时间为0 } for(int i = 1; i <= d; i++) cin >> wt[i]; dij(); int Min = maxn; for(int i = 1; i <= s; i++) if(Min > dis[wt[i]]) Min = dis[wt[i]];//找到源点-到草儿想去城市中花费最少的时间 cout << Min << endl; } return 0;}
0 0
- hdu 2066 最短路
- HDU 2066 最短路
- HDU 2066 最短路
- HDU-2066(dijkstra最短路综合)
- hdu 2066 Dijkstra 最短路应用
- HDU-2066 一个人的旅行 最短路
- hdu 2066 最短路水题
- hdu 2066 一个人的旅行(最短路)
- HDU 2066 (最短路 Floyd算法)
- hdu 2066 一个人的旅行(最短路)
- hdu 2066 一个人的旅行(最短路)
- HDU - 2066- 一个人的旅行【最短路】
- HDU 2066 Dijk 求最短路
- 最短路 2544hdu
- HDU 2544 最短路
- hdu 1245 最短路
- HDU最短路总结
- hDU 最短路
- 给一个表创建过程并查看该过程信息(是否创建成功)
- (转发)iOS的CoreData用法
- 相关系数(Correlation coefficient)
- 学习JavaScript的在线课程和指南
- hdu 2036 改革春风吹满地
- HDU 2066 最短路
- ASP.NET MVC Model验证(四)
- PBS输出文件无法获取的问题
- 使用美橙主机建站(jsp+mysql+tomcat建站)
- python多线程threading.Condition示例及解析
- hdu2665 划分树
- 将<a>标签的href属性值设置为"#"所表示的意思
- hdu 1879 继续畅通工程
- 对比iOS网络组件:AFNetworking 和 ASIHTTPRequest