题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233
//hdu1233 简单的最小生成树
//代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100;
int f[maxn];
struct node
{
int s,e,len;
} map[10000];
void make()
{
int i;
for(i=0;i<maxn;i++)
f[i]=i;
}
int find(int x)
{
while(f[x]!=x)
x=f[x];
return f[x];
}
void Union(int x,int y)
{
f[x]=y;
}
int cmp(const void *a,const void *b)
{
struct node *c=(node*)a;
struct node *d=(node*)b;
return c->len-d->len;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
int i;
for(i=0;i<n*(n-1)/2;i++)
scanf("%d%d%d",&map[i].s,&map[i].e,&map[i].len);
make();
qsort(map,n*(n-1)/2,sizeof(map[0]),cmp);
int sum=0;
for(i=0;i<n*(n-1)/2;i++)
{
int px=find(map[i].s),
py=find(map[i].e);
if(px!=py)
{
Union(px,py);
sum+=map[i].len;
}
}
printf("%d\n",sum);
}
return 0;
}
分享到:
相关推荐
杭电ACM课件2014版之 (HDUACM201403版_06)并查集(最小生成树)
(HDUACM2010版_06)并查集(最小生成树(HDUACM2010版_06)并查集(最小生成树(HDUACM2010版_06)并查集(最小生成树(HDUACM2010版_06)并查集(最小生成树
题目链接题目意思有n个城镇,编号为0~n-1,m条道路,从一个城镇到另一个城镇有多条路,现在问你从一个城镇到另一个城镇的最短距离是多少。其中要注意的是,城镇之间
hdu 1166线段树代码
算法-畅通工程(HDU-1232)(包含源程序).rar
算法-畅通工程续(HDU-1874)(包含源程序).rar
HDU的ACM,非常的好 涉及了很多算法,例如二分匹配、博弈、组合、最小生成树、搜索、动态规划、贪心算法
hdu 1166线段树
HDU的1250,主要是利用高精度加法,但是代码有点繁琐,效率不是很高
杭电ACMhdu1163
HDU1059的代码
hdu1001解题报告
hdu 1574 passed sorce
HDU的一题........HDU DP动态规
hdu2101AC代码
hdu acm 教案 搜索入门 hdu acm 教案 搜索入门
搜索 dfs 解题代码 hdu1241
NULL 博文链接:https://128kj.iteye.com/blog/1734821
hdu 5007 Post Robot 字符串枚举。 暴力一下就可以了。
压缩包包含十份报告,已经通过验收,实验内容:交换机、生成树、静态路由、NAT等完全根据教材实验要求