当前位置: 首页 > news >正文

【模板】并查集

int fa[MAXN], rank[MAXN];
inline void init(int n)
{
    for (int i = 1; i <= n; ++i)
    {
        fa[i] = i;
        rank[i] = 1;
    }
}

int find(int x)
{
    return x == fa[x] ? x : (fa[x] = find(fa[x])); // 路径压缩
}

inline void merge(int i, int j)
{
    int x = find(i), y = find(j);
    if (rank[x] <= rank[y])
        fa[x] = y;
    else
        fa[y] = x;
    if (rank[x] == rank[y] && x != y)
        rank[y]++;
}

路径压缩和按秩合并如果一起使用,时间复杂度接近 O ( n ) O(n) O(n),但是很可能会破坏rank的准确性。如果要保证秩的准确性,需要使用非路径压缩的版本。

http://www.dtcms.com/a/15908.html

相关文章:

  • 【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接
  • 深入了解常见MCU架构:ARM、AVR与其他嵌入式系统
  • Microsoft Edge浏览器介绍
  • 51单片机独立按键的扩展应用
  • npm版本号标记
  • IIS部署netcore程序后,出现500.30错误解决方案之一
  • 红黑树(set,map)算法题
  • 简易 Shell 实现指南
  • 第二章:14.1 倾斜数据集的误差指标
  • 性格测评小程序04题库管理
  • 动态规划算法
  • 探索ELK 的魅力
  • 原型模式详解(Java)
  • Nginx location 和 proxy_pass 配置详解
  • [Python 数据科学] Python 的良好编程规范与 logging 的使用
  • 如何下载AndroidStudio的依赖的 jar,arr文件到本地
  • 网络通信的基石:深入理解 TCP/IP 协议栈与 TCP/UDP 协议
  • Linux命令 ----操作命令
  • 2.14寒假
  • Baklib知识中台构建企业智能运营核心架构
  • 基于 openEuler 构建 LVS-DR 群集
  • 《玩转AI大模型:从入门到创新实践》(9)第七章 AI职业地图:从使用者到创造者
  • k8s集群搭建参考(by lqw)
  • DeepSeek处理自有业务的案例:让AI给你写一份小众编辑器(EverEdit)的语法着色文件
  • 给你一个三维numpy,形状为n*120*140,这里n<30,在其第一位维度n上扩展,将其扩展到30,扩展的部分全部设置为零
  • LLM:BERT or BART 之BART
  • 机器学习之AAE(Adversarial Autoencoder,对抗自编码器)生成数据样本
  • Jenkins项目CICD流程
  • Git GUI设置中文的方法及使用
  • 解决DeepSeek服务器繁忙问题