您的位置:首页 > 其它

hdu 1213 How Many Tables

2012-07-26 15:04 357 查看
点击打开链接

并查集
#include"stdio.h"
int set[1005];
int find(int x)
{
int r;
r=x;
while(set[r]!=r)
r=set[r];
return r;
}
void merge(int x,int y)
{
int f1,f2;
f1=find(x);
f2=find(y);
if(f1!=f2)
set[f1]=f2;
}
int main()
{
int t,n,m,x,y,i,count;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
set[i]=i;
for(i=0;i<m;i++)
{
scanf("%d%d",&x,&y);
merge(x,y);
}
count=0;
for(i=1;i<=n;i++)
if(set[i]==i)
count++;
printf("%d\n",count);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: