九度考研真题 浙大 2008-3浙大1028:继续畅通工程

来源:互联网 发布:丰胸什么感觉知乎 编辑:程序博客网 时间:2024/04/28 03:07
//题目1028:继续畅通工程
#include<iostream>
#include<algorithm>
using namespace std;
int Tree[1010];
int findRoot(int x){
if(Tree[x]==-1) return x;
else {
int tmp=findRoot(Tree[x]);
Tree[x]=tmp;
return tmp;

}
struct Edge{
int a,b;
int cost;
bool operator<(const Edge&A)const{
return cost<A.cost;
}
}edge[4000];
int main(){
int n;
while(cin>>n&&n!=0){
for(int i=0;i<n*(n-1)/2;i++){
cin>>edge[i].a>>edge[i].b>>edge[i].cost;
}
sort(edge,edge+n*(n-1)/2);
int ans=0;
for(int i=0;i<n*(n-1)/2;i++) Tree[i]=-1;
for(int i=0;i<n*(n-1)/2;i++){
int a=findRoot(edge[i].a);
int b=findRoot(edge[i].b);
if(a!=b){
Tree[a]=b;
ans+=edge[i].cost;

} cout<<ans<<endl;
}
}
1 0