您当前的位置: 首页 > 

PolarDay.

暂无认证

  • 1浏览

    0关注

    144博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

并查集(模板+例题)

PolarDay. 发布时间:2021-11-28 17:35:15 ,浏览量:1

并查集 概念

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。

实现

属性: pre[]:记录每个结点的先驱结点 size[]:记录当前结点所属集合的大小 count:记录连通分量的个数 方法: 查找代表元(find):查找当前结点所属集合的代表元,树形结构,我们可以通过pre逐层向上查找,一直找到根节点即为当前集合的代表元。 (这里的代表元就是一个集合中的代表元素,如果两个元素的代表元相同,则这两个元素属于同一集合)

int find(int x)
    {
        if (pre[x] == x)
            return x;
        return pre[x] = find(pre[x]);
    }

合并(connect):合并两个结点,我们通过pre[y]=x,将y结点连接到x上,这里我们为了减少find函数的迭代次数,我们总是把小的集合连接到大的集合上。

bool connect(int x, int y)
    {
        x = find(x);
        y = find(y);
        if (x == y)
            return false;
        if (size[x]             
关注
打赏
1659342973
查看更多评论
0.0416s