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十一月,我花开后百花杀。
  • 相关阅读:
    ARM处理器
    进程和线程通俗理解
    const与指针
    字符提取命令
    ThinkPHP之视图模版的使用
    ThinkPHP之MVC与URL访问
    ThinkPHP之项目搭建
    android之文件存储和读取
    cryptdb中wrapper.lua的分析
    cryptDB安装分析
  • 原文地址:https://www.cnblogs.com/china-mjr/p/11229911.html
Copyright © 2011-2022 走看看