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

并查集的模拟实现

简化版本


class UnionFindSet
{
public:UnionFindSet(size_t n):_ufs(n, -1){}void Union(int x1, int x2){int root1 = FindRoot(x1);int root2 = FindRoot(x2);// 如果本身就在一个集合就没必要合并了if (root1 == root2)return;// 控制数据量小的往大的集合合并if (abs(_ufs[root1]) < abs(_ufs[root2]))swap(root1, root2);_ufs[root1] += _ufs[root2];_ufs[root2] = root1;}int FindRoot(int x){int root = x;while (_ufs[root] >= 0){root = _ufs[root];}// 路径压缩while (_ufs[x] >= 0){int parent = _ufs[x];_ufs[x] = root;x = parent;}return root;}bool InSet(int x1, int x2){return FindRoot(x1) == FindRoot(x2);}size_t SetSize(){size_t size = 0;for (size_t i = 0; i < _ufs.size(); ++i){if (_ufs[i] < 0){++size;}}return size;}private:vector<int> _ufs;
};


http://www.mrgr.cn/news/44938.html

相关文章:

  • BMC pam认证的使用
  • LeetCode1049:最后一块石头的重量
  • IDEA搭建JDK1.8源码调试环境
  • Android架构--MVVM
  • Linux操作系统——概念扫盲I
  • Django学习笔记十四:系统框架总结
  • 分治算法(4)_快速选择_库存管理III_面试题
  • [运维]5.镜像本地存在但仍然从网络拉取的问题
  • 【Linux】自主shell编写
  • Nginx06-静态资源部署
  • 链表排序
  • 大语言模型(LLM)综述
  • 代码随想录--栈与队列--用栈实现队列
  • 【重学 MySQL】六十、空间类型
  • 永洪BI:企业数字化转型的得力助手
  • 等保测评的转型,对于提升我国网络空间的安全防护水平具有重要意义
  • TryHackMe 第7天 | Web Fundamentals (二)
  • Leecode刷题之路第12天之整数转罗马数字
  • 《重生到现代之从零开始的数据结构生活》—— 复杂度
  • Ollama接口系统详解