#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <set>
#include <ctype.h>//isalpha,isdight,toupper
#include <map>
#include <sstream>
typedef long long ll;
using namespace std;
#define inf 0x3f3f3f3f
const int maxn=101;
int f[1000]={0},n,m,k,sum=0;
void init(){
for(int i=1;i<=n;i++){
f[i]=i;
}
return ;
}
int Find(int x){
if(f[x]==x){
return x;
}
else{
f[x]=Find(f[x]);
return f[x];
}
}
void merge1(int v,int u){
int t1,t2;
t1=Find(v);
t2=Find(u);
if(t1!=t2){
f[t2]=t1;
}
return ;
}
int main(){
int i,x,y;
scanf("%d%d",&n,&m);
init();
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
merge1(x,y);
}
for(i=1;i<=n;i++){
if(f[i]==i)sum++;
}
printf("%d\n",sum);
return 0;
}
并查集 模板加小例题
猜你喜欢
转载自blog.csdn.net/abc1235454/article/details/88929045
今日推荐
周排行