#include <iostream>
#include <stdio.h>
#include <math.h>
#include <algorithm>
#include <string>
#include <string.h>
#include <map>
#include <set>
#include <vector>
#include <stdlib.h>
#include <queue>
#define maxn 5000
using namespace std;
int mmp[maxn];
int f(int v)
{
return mmp[v]==v?v:mmp[v]=f(mmp[v]);
}
void join(int x,int y)
{
int t1=f(x);
int t2=f(y);
if(t1!=t2)
mmp[ t1 ] = mmp[ t2 ];
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
int a,b;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
mmp[i]=i;
//cout<<"mmp["<<i<<"] = "<<mmp[i]<<endl;
}
for(int i=1;i<=m;i++){
scanf("%d%d",&a,&b);
join(a,b);
// cout<<"a= "<<a<<"b= "<<b<<endl;
}
//set<int>s;
// for(int i=1;i<=n;i++){
mmp[i]=i;
// cout<<"mmp["<<i<<"] = "<<mmp[i]<<endl;
// }
int all=0;
for(int i=1;i<=n;i++){
if(mmp[i]==i)all++;
}
//mmp.clear();
// for(int i=1;i<=n;i++){
mmp[i]=i;
// cout<<"mmp["<<i<<"] = "<<mmp[i]<<endl;
// }
printf("%d\n",all);
}
return 0;
}
wbmn 并查集(掌门之争)
最新推荐文章于 2020-07-28 19:16:11 发布