#include<iostream>
using namespace std;
int a[1002];
int n;
//a[i]表示i元素的父亲节点是谁
void init(){//初始化函数,每个元素的父亲节点都是自己,
//也就是自成一派。
for(int i=0;i<n;i++){
a[i]=i;
}
}
int findx(int x){//查找函数 ,判断元素的父亲节点是否自己,也就是是否自成一派
// 如果不是,就查找父亲的父亲节点,直至找到根节点。
int r=x;
while(a[r]!=r){
r=a[r];
}
return r;
}
void join(int x,int y){
//合并函数,先分别找到他们俩所在的根节点
//然后判断是否是属于同一根节点
//如果不是,就将fy作为fx的父亲节点,这样就属于同一个根节点了
int fx,fy;
fx=findx(x);
fy=findx(y);
if(fx!=fy){
a[fx]=fy;
}
}
//经过一系列的合并之后,a[i]=i 的个数就是最后形成的集合的个数
int main(){
return 0;
}
基础并查集(模板)
最新推荐文章于 2024-08-10 15:25:17 发布