LightOJ-1002-Country Roads [最短路][Dijkstra]
2017-08-27 20:03
429 查看
题目传送门
题意:给定无向图,求一个城市t到其他城市的最低成本,成本的定义为路径中的最大消费。
思路:这个题跟POJ-2253-Frogger类似,可以用Dijkstra算法变形来写。也可以用kruskal来写。
题意:给定无向图,求一个城市t到其他城市的最低成本,成本的定义为路径中的最大消费。
思路:这个题跟POJ-2253-Frogger类似,可以用Dijkstra算法变形来写。也可以用kruskal来写。
#include <bits/stdc++.h> using namespace std; int n, m; int mp[550][550]; const int INF = 0x3f3f3f3f; void Dij(int x) { int dis[550]; bool vis[550]; memset(dis, INF, sizeof(dis)); memset(vis, false, sizeof(vis)); for (int i = 0; i < n; i++) dis[i] = mp[x][i]; vis[x] = true; dis[x] = 0; for (int i = 0; i < n; i++) { int mi = INF; int f = -1; for (int j = 0; j < n; j++) { if (!vis[j] && dis[j] < mi) { mi = dis[j]; f = j; } } if (f==-1) break; vis[f] = 1; for (int j = 0; j < n; j++) { if (!vis[j] && dis[j] > max(dis[f],mp[f][j])) { dis[j] = max(dis[f], mp[f][j]); } } } for (int i = 0; i < n; i++) { if (dis[i]<INF) printf("%d\n",dis[i]); else printf("Impossible\n"); } return ; } int main(void) { int T, cas = 1; scanf("%d", &T); while (T--) { memset(mp, INF, sizeof(mp)); scanf("%d %d", &n, &m); while (m--) { int x, y, s; scanf("%d %d %d", &x, &y, &s); if (mp[x][y] >= s) mp[x][y] = mp[y][x] = s; } int p; scanf("%d", &p); printf("Case %d:\n",cas++); Dij(p); } return 0; }
相关文章推荐
- LightOJ1002---Country Roads (最短路变形)
- LightOJ 1002 Country Roads 最短路变形
- 【最短路】 LightOJ 1002 - Country Roads 变形
- lightoj 1002 Country Roads (Dijkstra变形)
- 【Dijkstra】-LightOJ-1002-Country Roads
- lightoj 1002 - Country Roads(最短路变形)
- LightOJ 1002 Country Roads(最短路变形(SPFA||贝尔曼))
- Lightoj1002——Country Roads(最短路变形)
- LightOJ 1099 - Not the Best(Dijkstra次短路)
- lightoj 1002 变形dijkstra
- LIGHTOJ 1002 – COUNTRY ROADS 【求最大边最小的路径】
- lightOJ 1002:Country Roads
- LightOJ - 1002 Country Roads(最小瓶颈路)
- 【lightoj1002 - Country Roads】
- LightOJ 1002 Country Roads
- 【LightOJ 1002】 Country Roads
- 1002 - Country Roads(lightoj)
- F题【LightOJ 1002】【dijkstra】
- LightOJ 1002 Country Roads
- LightOJ - 1002 -Country Roads