并查集不解释,直接上手写代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int a[1005];
int n,m,sum;
int go()
{
for(int i=0; i<=n; i++)
a[i]=i;
}
int find(int x)
{
if(a[x]!=x)
a[x]=find(a[x]);
return a[x];
}
int unity(int x,int y)
{
int p1=find(x);
int p2=find(y);
if(p1!=p2)sum--;
if(p1<p2)a[p2]=p1;
else
a[p1]=p2;
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m;
go();
sum=n;
int x,y;
for(int i=0; i<m; i++)
{
cin>>x>>y;
unity(x,y);
}
cout<<sum<<endl;
}
return 0;
}