#include<iostream>
using namespace std;
const int M=3;
int a[N]; //a[i]表示与父节点
int r[N]; //r[i]表示与父节点之间的关系,每次更新r[i]伴随着a[i]的改变
int find(int i)
{
if(i==a[i]) return i;
int t=i;
while(i!=a[i]){
r[t]=(r[t]+r[a[i]])%M;
i=a[i];
}
a[t]=i;
return i;
}
int find(int x){ //无路径压缩版
if (father[x]!=x) father[x]=find(father[x]);
return father[x];
}
并查集
最新推荐文章于 2020-06-30 17:38:30 发布