HDU 3790 最短路
来源:互联网 发布:linux 文件所有者 编辑:程序博客网 时间:2024/05/20 05:47
/* 这个题目要注意的是当路径相同时要取费用最少的哪一条 其它的只要按照最短路的常规用法即可*/#include<iostream>using namespace std;const int maxn = 1000000;int n, m, d[1002][1002], p[1002][1002], dis[1002], pis[1002];bool vis[1002];void Dijk(int st, int ed){ for(int i = 1; i <= n; i++)//从1-n { dis[i] = d[st][i]; pis[i] = p[st][i]; } vis[st] = true; for(int k = 1; k < n; k++) { int Min = maxn, mj = -1; for(int i = 1; i <= n; i++) if(!vis[i] && dis[i]<Min) Min = dis[i], mj = i; vis[mj] = true; for(int i = 1; i <= n; i++) { if(!vis[i] && dis[i]>dis[mj]+d[mj][i])//必须保证mj-i要有通路 { dis[i] = dis[mj]+d[mj][i]; pis[i] = pis[mj]+p[mj][i]; } if(!vis[i] && dis[i]==dis[mj]+d[mj][i] && pis[i]>pis[mj]+p[mj][i]) pis[i] = pis[mj]+p[mj][i]; } } cout << dis[ed] << " " << pis[ed] << endl;}int main(){ while(cin >> n >> m && n||m) { int st, ed; for(int i = 1; i <= n; i++) { vis[i] = false; for(int j = 1; j <= n; j++) if(i != j) d[i][j] = d[j][i] = p[i][j] = p[j][i] = maxn; else d[i][j] = p[i][j] = 0; } while(m--) { int a, b, c, e; cin >> a >> b >> c >> e; if(d[a][b] > c) { d[a][b] = d[b][a] = c; p[a][b] = p[b][a] = e; } if(d[a][b] == c) if(p[a][b] > c) p[a][b] = p[b][a] = e; } cin >> st >> ed; Dijk(st,ed); } return 0;}
0 0
- HDU 3790 (最短路)
- HDU 3790 最短路
- hdu 3790 最短路
- hdu 3790 最短路
- HDU-3790 最短路 SPFA
- HDU-3790-最短路问题
- hdu 3790(最短路)
- HDU 3790 最短路 Dijkstra
- hdu 3790 最短路模板
- HDU 3790 最短路问题(最短路)
- hdu 3790 最短路spfa模板
- HDU 3790--最短路问题(Bellman_Ford)
- HDU 3790--最短路问题(Dijkstra)
- 最短路 2544hdu
- HDU 2544 最短路
- hdu 1245 最短路
- HDU最短路总结
- hDU 最短路
- poj 2318 TOY题解
- 挺好的一个关于at new/ at end of的说明
- 摩罗摩嘎
- 简洁清爽全屏自适应Jquery幻灯片
- ios学习之 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- HDU 3790 最短路
- 《0bug-C/C++商用工程之道》节选01--内存栈-1
- Tomcat如何与Servlet对象进行交互
- 图论模板整理
- 技术管理的核心内容——提高团队技能
- Oracle数据导入时,字符集问题解决
- java 读取、修改properties
- DIV+CSS里display:block的作用
- 在程序员的眼里,用户是这样使用他们开发的软件的