并查集模板

int pre[maxn];
void init()
{
    for(int i=0;i<maxn;i++)
    {
        pre[i]=i;
    }
}
int Find(int x)
{
    int p=x,tmp;
    while(x!=pre[x])
        x=pre[x];
    while(p!=x)
    {
        tmp=pre[p];
        pre[p]=x;
        p=tmp;
    }
    return x;
}
void join(int x,int y)
{
    int p,q;
    p=Find(x);
    q=Find(y);
    if(p!=q)pre[p]=q;
}

 

posted @ 2018-08-12 21:55  MCQ  阅读(100)  评论(0编辑  收藏  举报