带封装模版,喜欢的给个赞谢谢
2025-08-04 10:56:25
发布于:上海
5阅读
0回复
0点赞
封装功能
初始化并查集
获取父亲
合并
是否处于同一集合
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
struct Fa{
int fa[N]={};
void init(int n){//初始化并查集
for(int i=1;i<=n;i++){
fa[i]=i;
}
}
int get(int x){//获取父亲
if(fa[x]==x) return x;
return fa[x]=get(fa[x]);
}
void merge(int a,int b){//合并
fa[get(a)]=get(b);
}
bool is_comb(int a,int b){//是否处于同一集合
return get(a)==get(b);
}
};
Fa fa;
int main(){
int n,m;
cin>>n>>m;
fa.init(n);
while(m--){
int z,x,y;
cin>>z>>x>>y;
if(z==1){
fa.merge(x,y);
}else if(z==2){
if(fa.is_comb(x,y)) cout<<"Y"<<endl;
else cout<<"N"<<endl;
}
}
}
这里空空如也
有帮助,赞一个