套并查集模板就ojbk
/*Sample Input
2
5 3
1 2
2 3
4 5
5 1
2 5
Sample Output
2
4*/
#include <iostream>
using namespace std;
int pre[1005];
int Find(int x)
{
int p,tmp;
p=x;
while(x!=pre[x])
x=pre[x];
while(p!=x)
{
tmp=pre[p];
pre[p]=x;
p=tmp;
}
return x;
}
void join(int x,int y)
{
int p,q;
p=Find(x);
q=Find(y);
if(p!=q)pre[p]=q;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
pre[i]=i;
for(int i=1;i<=m;i++)
{
int a,b;
cin>>a>>b;
join(a,b);
}
int c=0;
for(int i=1;i<=n;i++)
{
if(pre[i]==i)
c++;
}
cout<<c<<endl;
}
return 0;
}