zoukankan      html  css  js  c++  java
  • 并查集

    并查集是一个树形的数据结构,每一个父节点的子节点都与它父亲具有关系属性(传递性),就相当于把一些具有相同属性的元素放进一个集合中。常常用于找祖宗(找共同)etc。

    这个代码分为四部分:初始化,找父亲,合并, 查找。

    1.初始化:

    让他们自己是自己的父亲节点

    void init(){
        for(int i=1;i<=n;i++){
            f[i]=i;
        } 
    }

    2.找父亲节点

    当自己是自己父亲时便return,其余的时候路径压缩递归

    int get_f(int v){
        if(f[v]==v) return v;
        else{
            return f[v]=get_f(f[v]);//路径压缩    
        }    
    }    

    3.合并

    假如这两个点不具有同一父亲,就用靠左原则,都并到同同一父节点之下。

    void merge(int v,int u){
        int t1,t2;
        t1=get_f(v);
        t2=get_f(u); 
        if(t1!=t2){ 
            f[t2]=t1; 
        }
        return ;
    }

    4.查询

    一定要用get_f(x)而非f[x]

    待到oi十一月,我花开后百花杀。
  • 相关阅读:
    「BZOJ 1000」A+B Problem
    「HNOI 2008」越狱
    蓝桥杯 拼音字母
    蓝桥杯 抽签
    蓝桥杯 快速排序
    [蓝桥杯] 最大比例
    [蓝桥杯] 交换瓶子
    [蓝桥杯] 四平方和
    [蓝桥杯] 剪邮票
    [蓝桥杯] 方格填数
  • 原文地址:https://www.cnblogs.com/china-mjr/p/11229911.html
Copyright © 2011-2022 走看看