并查集

原创 2015年11月17日 20:50:09

本文章仅供作者复习代码,不提供教程(要说教程,小的真的不会啊),所以有小伙伴勿入请火速离开,以免寻砖砍死作者造成不必要的麻烦。



并查集的实现:

int par[MAX_N]; //父亲
int height[MAX_N];//树的高度


//初始化n个元素

void init(int n){
    for(int i=0; i<n; i++){
        par[i] = i; //将每个初始化的点的父亲设置为自己本身即代表该点为孤立的点
        height[i] = 0;//初始化时,每个点的高度均为0
    }
}

//查询树的根节点,并且在查询过程中,进行路径压缩

int find(int x){
    if(par[x] == x){
        return x;//如果x是孤立的点,那么它的根节点就是它本身
    }else{
        return par[x] = find(x); // 递归找x的根节点,找到之后,x的父节点直接设置为根节点
    }
}

//合并两个节点
void unite(int x,int y){
    x = find(x);
    y = find(y);
    if(x == y)return;//如果两点本来就连通,则返回。

    if(height[x]<height[y]){
        par[x] = y;     //如果x的树的高度比y的小,则把x附在y上
    }else{
        par[y] = x;
        if(height[x] == height[y])height[x]++; //如果两者高度相同的话,把么合并后,高度必增长1
    }
}


//判断x,y是否属于同一集合


bool same(int x, int y){return find(x) == find(y);}



版权声明:虽然为本人原创,但是写得真是渣,想转就转,反正我也不是鸣人。

相关文章推荐

并查集代码

HDU1272&POJ - 1308并查集

A tree is a well-known data structure that is either empty (null, void, nothing) or is a set of one ...

并查集初步(黄劲松).ppt

  • 2015-04-01 15:45
  • 424KB
  • 下载

并查集.ppt

  • 2015-08-11 20:50
  • 832KB
  • 下载

HDU1213 How Many Tables(并查集)

How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)...

并查集的讲解

  • 2014-03-08 19:33
  • 256KB
  • 下载

并查集讲义

  • 2014-08-08 18:14
  • 556KB
  • 下载

HDU 1213 How Many Tables? (简单并查集)

How Many Tables Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)