并查集模板

int setfind(int xx)
{
    int fa=father[xx];
    if(fa==xx) return fa;
    else return father[xx]=setfind(fa);
}
void setunion(int xx,int yy)
{
    int X=setfind(xx);
    int Y=setfind(yy);
    if(X==Y) return;
    else if(val[X]>val[Y]) father[Y]=X;
    else father[X]=Y;
    if(val[X]==val[Y]) val[Y]++;
    return;
}

 

posted @ 2016-07-02 15:55  MukoiAoi  阅读(120)  评论(0编辑  收藏  举报