超级弱智最小生成树
#include<iostream>
#include<queue>
#include<stack>
#include<cstdlib>
#include<memory.h>
using namespace std;
int dian[101];
struct p
{
int u,v,juli;
bool operator <(const p &a) const
{
return juli>a.juli;
}
};
int gen(int x)
{
while(x!=dian[x])
{
x=dian[x];
}
return x;
}
void hebing(int a,int b)
{
int a1=gen(a);
int b1=gen(b);
dian[a1]=b1;
}
int main()
{
int n;
while(cin>>n)
{
if(n==0)break;
for(int a=1;a<=n;a++)dian[a]=a;
priority_queue<p>q;
int da=n*(n-1)/2;
while(da--)
{
int a,b,c;
cin>>a>>b>>c;
q.push({a,b,c});
}
int sum=0;
while(!q.empty())
{
int sd=q.top().v;
int we=q.top().u;
//cout<<"asdasd"<<endl<<q.top().juli<<endl<<"asdasd"<<endl;
if(gen(sd)!=gen(we))
{
sum=sum+q.top().juli;
hebing(sd,we);
}
q.pop();
}
cout<<sum<<endl;
}
return 0;
}