代码随想录|图论|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;
}
相关推荐
路长冬17 分钟前
数据结构01:顺序表
数据结构
yuan199971 小时前
MATLAB中的蛙跳算法实现
算法·matlab
pan0c231 小时前
KNN算法(K近邻算法)
算法·近邻算法
Jooolin2 小时前
【C++】C++中的 set
数据结构·c++·ai编程
Jooolin2 小时前
大名鼎鼎的红黑树,究竟是何方神圣?
数据结构·c++·ai编程
技术小泽2 小时前
JVM之CMS、G1|ZGC详解以及选型对比
java·jvm·后端·算法·性能优化
让我们一起加油好吗2 小时前
【C++】AVL树(详解)
数据结构·c++·visualstudio·avl树·平衡树
THMAIL3 小时前
随机森林的 “Bootstrap 采样” 与 “特征随机选择”:如何避免过拟合?(附分类 / 回归任务实战)
人工智能·算法·决策树·随机森林·分类·bootstrap·sklearn
草莓熊Lotso4 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day16
c语言·开发语言·经验分享·算法·强化
君万5 小时前
【LeetCode每日一题】21. 合并两个有序链表 2. 两数相加
算法·leetcode·链表