代码随想录|图论|15并查集理论基础

并查集理论基础 | 代码随想录

并查集还是比较简单的,只要搞清楚两个事情:

  1. 并查集是干啥的?解决什么类型问题?
  2. 并查集模板(背下来)

1、并查集是干啥的

并查集主要是两个功能:

  1. 两个元素添加到同一集合。
  2. 判断两个元素是否在同一集合

所以就是合并跟查找。

2、并查集模板

模版就是定义4个函数:

  1. 初始化
  2. 寻根(优化版更快)
  3. 判断
  4. 合并
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int n=1005;
vector<int> father(n,0);    // 根数组



// 并查集初始化
void init()
{
    for(int i=0;i<n;i++)
    {
        father[i]=i;
    }
}

// 并查集寻根
int find(int u)
{
    if(u=father[u])
        return u;
    else
        return find(father[u]);
}

// 并查集寻根(优化版)
int find(int u)
{
    if(u==father[u]) return u;
    else return father[u]=find(father[u]);
}


// 判断u和v是否在一个集合里面
bool isSame(int u,int v)
{
    u=find(u);
    v=find(v);
    return u==v;
}

// 将两个元素添加到同一个集合里
void join(int u,int v)
{
    u=find(u);
    v=find(v);
    if(u==v) return;    // 如果根相同,则说明在一个集合
    father[u]=v;
}
相关推荐
疯疯癫癫才自由3 分钟前
爬取Leetcode Hot 100 题单
算法·leetcode
WolfGang0073216 分钟前
代码随想录算法训练营Day33 | 322.零钱兑换、279.完全平方数、139.单词拆分、背包总结
算法
CoderYanger9 分钟前
递归、搜索与回溯-综合练习:28.不同路径Ⅲ
java·算法·leetcode·深度优先·1024程序员节
我发在否11 分钟前
Rust > 牛客OJ在线编程常见输入输出练习场
算法·rust
忆湫淮12 分钟前
ENVI 5.6 利用现场标准校准板计算地表反射率具体步骤
大数据·人工智能·算法
Ayanami_Reii15 分钟前
基础数据结构应用-一个简单的整数问题
数据结构·算法·树状数组·fenwick tree
Ayanami_Reii28 分钟前
进阶数据结构应用-一个简单的整数问题2(Fenwick-Tree 解法)
数据结构·算法·前缀和·差分·树状数组·fenwick tree
老黄编程29 分钟前
点云生成深度图的原理及算法步骤和参数详细说明
数学·算法·点云·深度图
老黄编程33 分钟前
点云SIFT3D特征点云原理、算法描述及参数详细说明
算法·3d·sift3d
老黄编程36 分钟前
3DHarris特征提取算法描述及参数详细说明
数学·算法·几何·3dharris特征提取