当前位置: 首页 > 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的准确性。如果要保证秩的准确性,需要使用非路径压缩的版本。

相关文章:

  • 【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知识中台构建企业智能运营核心架构
  • 微信网页注册入口/网站优化公司哪家效果好
  • html技术的简介/济南seo整站优化厂家
  • 武汉网站制作公司/2022百度搜索风云榜
  • 如何防范恶意网站/搜索引擎营销案例分析
  • 旅游公网站如何做/关键词的优化方法
  • 网站功能模块设计/网络销售公司经营范围