Code
#include <iostream>
using namespace std;
int parent[1005];
int find(int x)
{
int r=x;
while( parent[r]!=r )//找出 x 的根结点
r=parent[r];
return r;
}
int merge(int x,int y)
{
int px,py;
px=find(x);
py=find(y);
if( px!=py )//把 x 合并到 y 集合里
parent[px]=py;
return 0;
}
int main()
{
freopen("acm.txt","r",stdin);
int t,n,m,x,y,count,i;
cin>>t;
while( t-- )
{
cin>>n>>m;
for(i=1;i<=n;i++)
parent[i]=i;
while( m-- )
{
cin>>x>>y;
merge(x,y);
}
count=0;
for(i=1;i<=n;i++)
{
if( parent[i]==i )//根节点等于本身的是一个集合
count++;
}
cout<<count<<endl;
}
return 0;
}
posted @
2009-05-13 11:56
yansirfuture
阅读(
115)
评论()
编辑
收藏
举报