代码随想录|图论|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;
}
相关推荐
ZhengEnCi1 天前
GPT-6 Astra 爆改 Qwen 权重真有那么神吗:权重空间编程 0.016% 参数的真相
算法·架构
罗西的思考1 天前
【轻量化复刻大模型 / KIMI K3】KDA(Kimi Delta Attention):并行
人工智能·算法·机器学习
夜不会漫长1 天前
C++:红黑树
数据结构·算法
文丑颜不良啊1 天前
LeetCode1661~1680题目解析
java·leetcode
AI备案指南-满满1 天前
算法备案审核不通过,一般是什么原因?
java·人工智能·算法·大模型备案·算法备案·大模型登记
Ramble_Naylor1 天前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
秋天的怀念_David1 天前
算法一千零一夜 · 第二十三夜 电力民生写成的曲线
java·程序人生·算法
不一样的故事1261 天前
NB/T 47013.8-2015 附录D 吸枪技术
人工智能·经验分享·算法
通问AI1 天前
用 200 行 Python 给文档库做「上下文完整度」自检:四个可复算的检查项
算法
揽星河..1 天前
【C语言】扫雷游戏
c语言·算法·游戏