您的位置:首页 > 其它

hdu 1233 还是畅通工程

2015-05-14 20:31 375 查看
最小生成树,kruskal算法

#include<iostream>
#include<algorithm>
#define maxn 5000+5
using namespace std;
int n,m;
int re;
int f[maxn];
struct stu
{
int x,y,l;
};
stu mapp[maxn];
bool cmp(stu x,stu y)
{
return x.l<y.l;
}
int dfs(int x)
{
if(f[x]!=x) f[x]=dfs(f[x]);
return f[x];
}
void luka()
{
re=0;
for(int i=1;i<=n;i++) f[i]=i;
for(int i=0;i<m;i++)
{
if(dfs(f[mapp[i].x])!=dfs(f[mapp[i].y]))
{
re+=mapp[i].l;
f[dfs(f[mapp[i].x])]=dfs(f[mapp[i].y]);
}
}
cout<<re<<endl;
}
int main()
{
while(cin>>n&&n)
{
m=n*(n-1)/2;
for(int i=0;i<m;i++)
{
cin>>mapp[i].x>>mapp[i].y>>mapp[i].l;
}
sort(mapp,mapp+m,cmp);
luka();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: