带权并查集模板

int f[maxn];
int val[maxn];
int find(int x){
    if(f[x]!=x){
    int p=f[x];
    f[x]=find(f[x]);
    val[x]+=val[p];
    }
    return f[x];
}
int merge(int x,int y,int c){
    if(find(x)!=find(y)){
        int fx=find(x);
        int fy=find(y);
        f[fx]=fy;
        val[fx]+=c+val[y]-val[x];
        return 1;
    }else{
        if(val[x]-val[y]!=c)return 0;
        return 1;
    }
}
posted @ 2025-06-10 19:01  Marinaco  阅读(12)  评论(0)    收藏  举报
//雪花飘落效果