并查集模板

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;
}

原文地址:https://www.cnblogs.com/mukoiaoi/p/5635502.html