并查集

来源:互联网 发布:携程幼儿园虐童 知乎 编辑:程序博客网 时间:2024/06/07 01:59
#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];}

0 0
原创粉丝点击