并查集 1213
基本并查集 查看有多少集合
#include<iostream>
using namespace std;
int father[1001];
int find(int x)
{
while(x!=father[x])
x=father[x];
return x;
}
void un(int x,int y)
{
x=find(x);
y=find(y);
if(x!=y)
father[x]=y;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
father[i]=i;
int x,y;
for(i=1;i<=m;i++)
{
cin>>x>>y;
un(x,y);
}
int sum=0;
for(i=1;i<=n;i++)
if(father[i]==i)
sum++;
cout<<sum<<endl;
}
return 0;
}