您的位置:首页 > 其它

Hdu1863 - 畅通工程 - 最小生成树

2014-07-27 14:48 281 查看
#include<stdio.h>
#include<algorithm>
using namespace std;
int p[10000];
struct tree
{
int st,ed,va;
}road[10000];
int cmp(tree a,tree b)
{
return a.va<b.va;
}
int find(int n)
{
if(p
!=n)
{
p
=find(p
);
}
return p
;
}
int main()
{
int n,m,count,i,a,b;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0)
{
break;
}
for(i=1;i<=m;i++)
{
p[i]=i;
}
for(i=1;i<=n;i++)
{
scanf("%d%d%d",&road[i].st,&road[i].ed,&road[i].va);
}
sort(road+1,road+n+1,cmp);
int sum=0;
for(i=1;i<=n;i++)
{
a=find(road[i].st);
b=find(road[i].ed);
if(a!=b)
{
p[a]=b;
sum+=road[i].va;
m--;
}
if(m==1)
{
break;
}
}
if(m==1)
{
printf("%d\n",sum);
}
else
{
puts("?");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: