尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

并查集(DSU)

并查集(DSU)
📅 发布时间:2026/6/20 14:40:51

基础封装

通常意义上我们默认增加“路径压缩”优化,时间复杂度为:查询 O(1)\mathcal O (1) ,合并接近于 O(α(n))\mathcal O(\alpha(n)) (这里 α\alpha 代表的是反阿克曼函数,一般看作是一个极小的常数)。

struct DSU {vector<int> fa, p;DSU(int n) {fa.resize(n + 1);iota(fa.begin(), fa.end(), 0);p.resize(n + 1, 1);}int get(int x) {while (x != fa[x]) {x = fa[x] = fa[fa[x]];}return x;}bool merge(int x, int y) { // 设x是y的祖先x = get(x), y = get(y);if (x == y) return false;if (x < y) swap(x, y); // 将编号小的合并到大的上fa[y] = x;p[x] += p[y];return true;}bool same(int x, int y) {return get(x) == get(y);}int size(int x) { // 输出连通块中点的数量return p[get(x)];}
};

求解连通块内部点、边、环信息

并查集算法除了常规意义上的寻找(时间序意义上的)祖先节点、寻找块内最小/最大的节点之外,还可以用极小的时间代价维护连通块内点的数量、边的数量、是否存在自环等等内容。除了“路径压缩”优化外,还有“启发式合并”优化能够进一步缩短合并花费的时间,然而这会影响上述罗列的最大/最小节点查找,故一般我个人习惯不添加这一优化。

struct DSU {vector<int> fa, p, e, f;DSU(int n) {fa.resize(n + 1);iota(fa.begin(), fa.end(), 0);p.resize(n + 1, 1);e.resize(n + 1);f.resize(n + 1);}int get(int x) {while (x != fa[x]) {x = fa[x] = fa[fa[x]];}return x;}bool merge(int x, int y) { // 设x是y的祖先if (x == y) f[get(x)] = 1;x = get(x), y = get(y);e[x]++;if (x == y) return false;if (x < y) swap(x, y); // 将编号小的合并到大的上fa[y] = x;f[x] |= f[y], p[x] += p[y], e[x] += e[y];return true;}bool same(int x, int y) {return get(x) == get(y);}bool F(int x) { // 判断连通块内是否存在自环return f[get(x)];}int size(int x) { // 输出连通块中点的数量return p[get(x)];}int E(int x) { // 输出连通块中边的数量return e[get(x)];}
};

模板题

https://www.luogu.com.cn/problem/P3367

相关新闻

  • 第十七天
  • 如何炫酷地使用集合划分容斥
  • 蛋白表达原理与关键要素解析

最新新闻

  • 2026 年 6 月前沿速报|上海百达翡丽品牌官方售后机芯全面保养,上海百达翡丽收藏腕表闲置多年该简易预检还是全套深度养护? - 亨得利官方维修中心
  • 中兴光猫配置解密工具终极指南:如何轻松破解加密配置文件
  • Layerdivider:从传统抠图到智能分层的技术革命
  • Adobe-GenP 3.0终极指南:三步免费解锁Adobe全家桶完整功能
  • NETCONF/YANG协议与Netopeer2在工业网络自动化管理中的实践
  • 微信活动报名链接怎么做的,云帆投票+西瓜评选+腾讯投票,.投票系统横向测评 - 投票小程序

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号