uva 10246 - Asterix and Obelix(最短路)
来源:互联网 发布:知象科技 李凌 编辑:程序博客网 时间:2024/05/29 16:31
题目链接:uva 10246 - Asterix and Obelix
枚举起始点,以起始点的点权为最大值。然后维护两点之间的最短距离。
#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>using namespace std;const int maxn = 100;const int inf = 0x3f3f3f3f;typedef pair<int,int> pii;int N, M, Q, W[maxn], D[maxn], ans[maxn][maxn];bool done[maxn];vector<pii> G[maxn];struct State {int u, d;State(int u = 0, int d = 0): u(u), d(d) {}bool operator < (const State& a) const { return d > a.d; }};void init () {for (int i = 1; i <= N; i++) {G[i].clear();scanf("%d", &W[i]);}int u, v, w;for (int i = 0; i < M; i++) {scanf("%d%d%d", &u, &v, &w);G[u].push_back(make_pair(v, w));G[v].push_back(make_pair(u, w));}}void Dijkstra(int s) {memset(D, inf, sizeof(D));memset(done, false, sizeof(done));D[s] = 0;priority_queue<State> que;que.push(State(s, D[s]));while (!que.empty()) {int u = que.top().u;que.pop();if (done[u]) continue;done[u] = true;for (int i = 0; i < G[u].size(); i++) {int v = G[u][i].first, w = G[u][i].second;if (W[v] > W[s]) continue;if (D[v] > D[u] + w) {D[v] = D[u] + w;que.push(State(v, D[v]));}}}for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++)ans[i][j] = min(ans[i][j], D[i] + D[j] + W[s]);}int main () {int cas = 0;while (scanf("%d%d%d", &N, &M, &Q) == 3 && N + M + Q) {if (cas) printf("\n");init();memset(ans, inf, sizeof(ans));for (int i = 1; i <= N; i++)Dijkstra(i);int u, v;printf("Case #%d\n", ++cas);for (int i = 0; i < Q; i++) {scanf("%d%d", &u, &v);if (ans[u][v] == inf) printf("-1\n");else printf("%d\n", ans[u][v]);}}return 0;}
0 0
- UVA 10246 - Asterix and Obelix(最短路)
- uva 10246 - Asterix and Obelix(最短路)
- (beginer) 最短路 UVA 10246 Asterix and Obelix
- uva 10246 Asterix and Obelix(最短路问题拓展 dijkstra)
- UVa 10246 Asterix and Obelix(变形的最短路径)
- 10246 - Asterix and Obelix
- uva10246- Asterix and Obelix
- uva_10246_Asterix and Obelix(最短路)
- UVa10246 - Asterix and Obelix(最短路径变形)
- UVA 1416 - Warfare And Logistics(最短路树)
- uva 1416 - Warfare And Logistics(最短路)
- UVA-1416-Warfare And Logistics(最短路树)
- uva 10246(最短路变形)
- UVA - 1416 Warfare And Logistics (最短路)
- UVA 10537(最短路)
- UVA 567 - Risk(最短路)
- uva 567 Risk(最短路Folyd)
- uva 10803 Thunder Mountain(最短路)
- [LeetCode] Clone Graph(!!!!graph&dfs&bfs)
- android 自定义view 让文字飞起来
- PM2.5检测仪设计
- 软件测试常用术语
- 写给深夜里的自己
- uva 10246 - Asterix and Obelix(最短路)
- MySQL之——Linux单机启动多个MySQL实例(mysqld_multi )
- python 笔记2--函数
- 2015 暑假集训总结
- Execl多个xls文件转为表单合并在一个xls文件下VBS脚本
- Java利用递归的方法求整数数组中的最大值
- UIScrollView&UIPageControl
- 03_获取手机内存状态
- 极度的冷静与耐心