现在的位置: 首页 > 综合 > 正文

并查集

2015年11月21日 ⁄ 综合 ⁄ 共 294字 ⁄ 字号 评论关闭
#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];
}

抱歉!评论已关闭.