题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213
题目思路:并查集。。。。看了半天才有点懂。。。。看的是http://blog.youkuaiyun.com/loriex/article/details/18308197这个上的,然后突然就懂了。。
向大禹学习。。。
AC代码:
#include<stdio.h>
int hou[1005];
int find(int a)
{
return hou[a]==a?a:find(hou[a]);
}
void ans(int a,int b)
{
a=find(a);
b=find(b);
hou[a]=b;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
scanf("%d%d",&n,&m);
int i,ii,a,b;
for(i=1;i<=n;i++)
hou[i]=i;
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b);
ans(a,b);
}
int num=0;
for(i=1;i<=n;i++)
if(hou[i]==i)num++;
printf("%d\n",num);
}
return 0;
}
AC截图: