带权并查集模板

Posted shineeternal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带权并查集模板相关的知识,希望对你有一定的参考价值。

#include<cstdio>
#include<iostream>
using namespace std;
int f[30005],d[30005],s[30005];
int find(int x)

    if(f[x]==x)return x;
    int tmp=find(f[x]);
    d[x]+=d[f[x]];
    
    return f[x]=tmp;

void move(int x,int y)

    int sx=find(x);
    int sy=find(y);
    if(sx==sy)return ;
    f[sx]=sy;
    d[sx]=s[sy];
    s[sy]+=s[sx];

void search(int x)

    find(x);
    printf("%d\n",d[x]);

int main()

    int q;
    scanf("%d",&q);
    for(int i=1;i<=30000;i++)
    
        f[i]=i;
        d[i]=0;
        s[i]=1;
     
    while(q--)
    
        char pd;
        cin>>pd;
        if(pd=='M')
        
            int x,y;
            scanf("%d%d",&x,&y);
            move(x,y);
        
        else
        if(pd=='C')
        
            int x;
            scanf("%d",&x);
            search(x);
        
    
    return 0;
 

以上是关于带权并查集模板的主要内容,如果未能解决你的问题,请参考以下文章

带权并查集模板

「带权并查集」奇偶游戏

总结一下我理解的带权并查集

并查集——poj2236(带权并查集)

CF553C Love Triangles(带权并查集)

(POJ1182)食物链(带权并查集-附通用模板)