#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int n,ans;
int p[105];
struct node
{
int s,e,dis;
}road[5000];
bool cmp( node a,node b)
{
return a.dis<b.dis;
}
int find(int x)
{
return x!=p[x]?p[x]=find(p[x]):x;
}
void merge( int i )
{
int x = find( road[i].s );
int y = find( road[i].e );
if( x!=y)
{
p[x]=y;
ans += road[i].dis;
}
}
int main()
{
int m,i;
while( scanf("%d",&n)!=EOF && n )
{
ans=0;
m=n*(n-1)/2;
for(i=0;i<m;i++)
scanf("%d%d%d",&road[i].s,&road[i].e,&road[i].dis);
sort(road,road+m,cmp);
for(i=1;i<=n;i++)
p[i]=i;
for(i=0;i<m;i++)
{
merge(i);
}
printf("%d\n",ans);
}
return 0;
}
HDU-1233 还是畅通工程 并查集加Kruskal
最新推荐文章于 2014-09-03 09:05:51 发布