int find(int x){
if(f[x]==x)return x;
else return f[x]=find(f[x]);//注意有return
}
void unit(int x,int y){
int f1=find(x),f2=find(y);
f[f1]=f2;
}
int main(){
//定义f[i]=j,节点i在集合j中
for(int i=1;i<=n;++i)f[i]=i;//初始化
//最后使用的时候刷新一下状态
for(int i=1;i<=n;++i)f[i]= find(f[i]);
return 0;
}
并查集
2023/12/6