并查集
2016-05-13 17:39
369 查看
并查集:
1.将N个不同的元素分成一组不相交的集合。
2.开始时,每个元素就是一个集合,然后按规律将两个集合进行合并。
![](http://images2015.cnblogs.com/blog/948472/201605/948472-20160513173525530-1341836231.png)
1.将N个不同的元素分成一组不相交的集合。
2.开始时,每个元素就是一个集合,然后按规律将两个集合进行合并。
![](http://images2015.cnblogs.com/blog/948472/201605/948472-20160513173525530-1341836231.png)
class UnionSet { public: UnionSet(size_t size) :_size(size) { _unionset.resize(size, -1); } void Combine(size_t pos1, size_t pos2) //合并函数 { int root1 = FindAncestor(pos1); int root2 = FindAncestor(pos2); _unionset[root1] += _unionset[root2]; _unionset[root2] = root1; } int FindAncestor(size_t pos) //寻找祖先节点的函数 { while (_unionset[pos] >= 0) //当某一元素为负数时说明,到了该集合的根节点了 { pos = _unionset[pos]; } return pos; } protected: vector<int> _unionset; size_t _size; };
相关文章推荐
- 知道这20个正则表达式 能让你少写1,000行代码
- keyCode对照表
- APP开机自启动
- AD域账户自动登陆(仅限IE浏览器)Java简单实现
- 【REACT NATIVE 系列教程之三】函数绑定与FLEXBOX是用好REACT的基础
- jq的slideToggle()在ie8里遇到bug:下盒子的margin—top失效,margin-top塌陷解决方法
- 常浏览的博客和网站
- java中文乱码解决之道(八)—–解决URL中文乱码问题
- 如何调用Android隐藏API
- 算法15 之二叉树排序
- 算法14 之归并排序
- CentOS7 PostgreSQL 主从配置( 三)
- 整理:Linux网络编程之sockaddr与sockaddr_in,sockaddr_un结构体详细讲解
- docker学习-简单安装及使用
- Invalid Regular Expression Options
- mysql表的连接方式
- codevs 1242 布局(查分约束+SPFA)
- 对于风行小组第一阶段冲刺成果的概括
- Python常见问题(6):Python在Windows上的问题 Python on Windows FAQ
- eclipse最有用快捷键整理