#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <set>
#include <map>
#include <vector>
#include <cmath>
using namespace std;
int pre[105];
struct unit{
int u;
int v;
int w;
}village [10005];
bool compare(unit a,unit b){
return a.w<b.w;
}
int find(int x){
int r =x;
while(pre[r]!=r){
r=pre[r];
}
pre[x]=r;
return r;
}
void mix(int a,int b){
pre[b]=a;
}
int main(){
int i,n,N;
while(scanf("%d",&N)&&N){//the total number of villages is N
n=N*(N-1)/2;
for(i=1;i<=N;i++){
pre[i]=i;
}
for(i=1;i<=n;i++){
scanf("%d%d%d",&village[i].u,&village[i].v,&village[i].w);
}
sort(village+1,village+n+1,compare);
int result=0;
for(i=1;i<=n;i++){
int x=find(village[i].u),y=find(village[i].v);
if(x!=y){
result=result+village[i].w;
mix(x,y);
}
}
printf("%d\n",result);
}
return 0;
}
hdoj1233 还是畅通工程
最新推荐文章于 2019-07-25 09:33:24 发布