hdoj 1213 //简单并查集

#include
#include
#include
#include
using namespace std;


int par[1005],rankk[1005];


void init(int n){
for(int i = 1;i<=n;++i){
par[i] = i;
rankk[i] = 0;
}
}


int find(int x){
if(par[x] == x)
return x;
else
return par[x] = find(par[x]);
}


void unite(int x,int y){
int a = find(x);
int b = find(y);
if(a == b)
return;
if(rankk[a] par[a] = b;
else{
par[b] = a;
if(rankk[a] == rankk[b])
++rankk[a];
}
}


int main(){
int t,a,b,n,m;
cin>>t;
while(t--){
cin>>n>>m;
init(n);
for(int i = 0;i cin>>a>>b;
unite(a,b);
}
int ans = 0;
for(int i = 1;i<=n;++i){
if(par[i] == i)
++ans;
}
cout< }
return 0;
}

你可能感兴趣的:(hdoj 1213 //简单并查集)