您的位置:首页 > 其它

51nod 1212 无向图最小生成树

2016-11-03 20:56 211 查看
#include <bits/stdc++.h>
using namespace std;

struct edge
{
int x,y,val;
}eg[50500];

bool cmp(edge e1,edge e2)
{
return e1.val<e2.val;
}

int fa[1010];

int findfa(int x)
{
if(fa[x]==x)
return x;
return fa[x]=findfa(fa[x]);
}

int main()
{
int n,m,i,ans;
while(cin>>n>>m)
{
for(i=0;i<m;i++)
{
scanf("%d%d%d",&eg[i].x,&eg[i].y,&eg[i].val);
}
for(i=1;i<=n;i++)
fa[i]=i;
ans=0;
sort(eg,eg+m,cmp);
for(i=0;i<m;i++)
{
if(findfa(eg[i].x)!=findfa(eg[i].y))
{
ans+=eg[i].val;
fa[findfa(eg[i].x)]=findfa(eg[i].y);
}
}
printf("%d",ans);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  51nod