#include <iostream>
using namespace std;
const int M=1e5+50;
int Rank[M];
int far[M];
void init(int n){//初始化并查集
for(int i=1;i<=n;i++){
far[i]=i;
Rank[i]=0;
}
}
int find(int x){//查找头目
if(x!=far[x]) far[x]=find(far[x]);
return far[x];
}
void join(int x,int y){//合并两个节点
x=find(x);
y=find(y);
if(x!=y){
if(Rank[x]<Rank[y]) far[x]=y;
else{
if(Rank[x]==Rank[y]) Rank[x]++;
far[y]=x;
}
}
}
int main(){//题目的输入输出
return ;
}
并查集模板
最新推荐文章于 2024-10-10 16:46:06 发布