最小生成树用到并查集http://acm.hdu.edu.cn/showproblem.php?pid=1233

2014-11-24 11:48:36 · 作者: · 浏览: 0

模板题:
不解释
[cpp]
#include
#include
#include
#include
using namespace std;
class node
{
public :
node()
{
val=0;
}

bool operator<(const node x)const
{
return this->val }
int val;
int x,y;
};
node a[10002];
int n;
int num[10002];
int find(int x)
{
return num[x]==x x:num[x]=find(num[x]);

}
int main() www.2cto.com
{
while(~scanf("%d",&n)&&n)
{
node a[10002];
int con=n*(n-1)/2;
for(int i=1;i<=con;++i)
{
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].val);
num[i]=i;
}
sort(a+1,a+con+1);
int sum=0;
//sum+=a[1].val;
for(int i=1;i<=con;i++)
{
int xx=find(a[i].x),yy=find(a[i].y);
if(xx!=yy)
{
num[xx]=yy;
sum+=a[i].val;
}
}
printf("%d\n",sum);
}
return 0;
}

作者: Java_beginer1