• 并查集


    首先,并查集是用来区分群体,树的双亲作为并查集的存储结构,每一个集合用一棵树来表示,根节点的双亲指针为一个负数,表示元素的个数

    初始化:

     小变化

    合并:

    操作代码:

    //自我实现 并查集
    //a[]={1,2,3,4,5,6,7}
    #include<iostream>
    using namespace std;
    
    const int maxn=100;
    int parent[maxn];
    int n,i,j;
    
    void ufset(){
        for(i=1;i<=n;i++)  parent[i]=-1;
    }
    
    int find(int x){
        int s;
        for(s=x;parent[x]>=0;s=parent[s]);
        return s;
    }
    //将两个不同集合元素进行合并,使两个集合任意两元素可以连通
    void Union(int R1,int R2){
        int r1=find(R1),r2=find(R2);
        int tmp=parent[r1]+parent[r2];//负数 
        if(parent[r1]>parent[r2]) {
            parent[r1]=r2;
            parent[r2]=tmp;
        }
        else {
            parent[r2]=r1;
            parent[r1]=tmp;
        }
    } 
    int find2(int x){
        int s;
        for(s=x;parent[s]>=0;s=parent[s]);
        while(x!=s){
            int tmp=parent[x];
            parent[x]=s;
            x=tmp; //递推 
        } 
    }
    int main()
    {
    
    } 
    View Code
  • 相关阅读:
    MVC3.0与C#截取字符串
    MVC3.0图片滚动和相册展示(上)
    MVC3.0视频点播及上传格式转化
    职位VS能力
    liblfds 测试
    dpdk 相关概念
    WAR文件
    在word中选择一个矩形区域
    IP地址 网段的划分
    ipconfig...ping...netstat
  • 原文地址:https://www.cnblogs.com/helloworld2019/p/10492855.html
Copyright © 2020-2023  润新知