对于并查集,记住三个模块即可
看到并查集题目,直接二话不说,按顺序三个模块一写,直接用。
1、father[N]数组
int father[N];
数值初始化:
//写在main函数里
for(int i=0;i<N;i++){
father[i]=i;
}
2、findfather(x)函数(带路径压缩,可以缩短查找时间)
int findfather(int x){
if(father[x]==x){
return x;
}else{
int F=findfather[father[x]]; //带路径压缩
father[x]=F;
return F;
}
}
3、Union函数
void U(int a,int b){
int fta=findfather(a);
int ftb=findfather(b);
if(fta!=ftb){
father[fta]=ftb;
}
}