HDU 1863 畅通工程
Posted jpphy0
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1863 畅通工程相关的知识,希望对你有一定的参考价值。
链接 - http://acm.hdu.edu.cn/showproblem.php?pid=1863
代码
/* HDU 1863 畅通工程 */
#include<bits/stdc++.h>
using namespace std;
#define MXN 110
#define MXM 110*55
int N, M, fa[MXN], ans;
struct Town{
int a, b, c;
bool operator<(Town t){ return c < t.c; }
}t[MXM];
int find(int r){
if(r != fa[r]) fa[r] = find(fa[r]);
return fa[r];
}
void merge(Town &t){
int t1 = find(t.a);
int t2 = find(t.b);
if(t1 != t2){
fa[t1] = t2;
ans += t.c;
}
}
int main(){
while(scanf("%d %d", &N, &M), N){
for(int i = 1; i <= N; i++)
scanf("%d %d %d", &t[i].a, &t[i].b, &t[i].c);
sort(t+1, t+N+1);
for(int i = 0; i <= M; i++) fa[i] = i;
ans = 0;
for(int i = 1; i <= N; i++) merge(t[i]);
for(int i = 1; i <= M; i++) if(i == fa[i]) fa[0]++;
if(1 == fa[0]) printf("%d\\n", ans);
else printf("?\\n");
}
return 0;
}
以上是关于HDU 1863 畅通工程的主要内容,如果未能解决你的问题,请参考以下文章