UVA 544 - Heavy Cargo(最小瓶颈路)
2014-09-11 16:41
2191 查看
UVA 544 - Heavy Cargo
题目链接题意:就是求最小瓶颈路了。。
思路:裸题,利用kruskal性质把边从大到小加入,然后一旦连通就结束输出答案
代码:
#include <cstdio>
#include <cstring>
#include <string>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 205;
const int M = 20005;
map<string, int> hash;
string a, b;
int hn;
int get(string a) {
if (!hash.count(a)) hash[a] = hn++;
return hash[a];
}
struct Edge {
int u, v, val;
void read() {
cin >> a >> b >> val;
u = get(a); v = get(b);
}
} e[M];
bool cmp(Edge a, Edge b) {
return a.val > b.val;
}
int n, m, parent
;
int find(int x) {
return x == parent[x] ? x : parent[x] = find(parent[x]);
}
int main() {
int cas = 0;
while (~scanf("%d%d", &n, &m) && n || m) {
string a, b, val;
hash.clear(); hn = 1;
for (int i = 1; i <= n; i++) parent[i] = i;
for (int i = 0; i < m; i++) e[i].read();
sort(e, e + m, cmp);
cin >> a >> b;
int ss = get(a), ee = get(b);
for (int i = 0; i < m; i++) {
int pu = find(e[i].u);
int pv = find(e[i].v);
if (pu != pv) {
parent[pu] = pv;
if (find(ss) == find(ee)) {
printf("Scenario #%d\n", ++cas);
printf("%d tons\n\n", e[i].val);
break;
}
}
}
}
return 0;
}
相关文章推荐
- (beginer) 最小生成树 UVA 544 Heavy Cargo
- UVa 544 Heavy Cargo( 最小生成树的variant)
- UVA 10457 ,uva10048 kruskal,最小瓶颈树,floyd
- UVA 10457 - Magic Car(最小瓶颈路)
- UVALive 5713 Qin Shi Huang's National Road System秦始皇修路(MST,最小瓶颈路)
- UVA-10816 Travel in Desert (最小瓶颈最短路)
- uva 1395 - Slim Span(最小瓶颈生成树)
- (intermediate) UVA (最小瓶颈生成树) 10457 - Magic Car
- 最小瓶颈路(uva 534)
- Frogger UVA 534(最小瓶颈路+floyd算法)
- uva 10457 - Magic Car ( 最小瓶颈树 的应用)
- UVA 10457 - Magic Car【最小瓶颈树】
- UVa 534 Frogger (最小瓶颈路)
- uva 10816 - Travel in Desert(最小瓶颈生成树+最短路)
- Heavy Cargo(uva 544)
- uva 534(最小瓶颈路)
- 【UVALIVE 5713】秦始皇修路(最小瓶颈路+Kruskal)
- UVA-1395(最小瓶颈生成树)
- uva 11354 bond 最小瓶颈路
- 【UVA 10816】 Travel in Desert (最小瓶颈树+最短路)