Disjoint sets(并查集)
来源:互联网 发布:微信发淘宝优惠券软件 编辑:程序博客网 时间:2024/06/05 03:50
PAT 1013
并查集算法是一种用于计算集合之间关系的高效算法,根据具体应用场景,如果集合内部元素之间的关系不重要,可以选择路径压缩,以获得更高的查找效率。算法的关键步骤分为三步:初始化、合并(包含查找过程)以及结果统计。
1、初始化
每个元素都是一个独立的集合,集合个数为n
int pre[N];
//数组中包含所有集合的所有元素for(int i = 1; i <= n; ++i) pre[i] = i; //n为实际元素个数,N为最大可能的元素个数
2、合并(包含查找)
如果内部元素之间的关系不重要,可采用路经压缩
int find(int x){//递归查找根节点,使用路径压缩 if(pre[x] == x) return x; else return pre[x] = find(pre[x]);}
void union(int a, int b){//如果a,b根节点不同则合并 int ra = find(a); int rb = find(b); if(ra != rb) pre[ra] = rb;}
3、统计结果
如果pre数组中的元素为根节点,则该元素在pre数组中的值仍然等于下标值
for(int i = 1; i <= n; ++i) if(pre[i] == i) ++cnt;
0 0
- Disjoint sets(并查集)
- 【算法导论】21:并查集Disjoint sets
- 并查集(disjoint)
- 目标融合之 ——并查集(Disjoint Sets)||(Union Find Sets)
- 并查集 (Disjoint Set)
- 并查集(Disjoint Set)
- 并查集(Disjoint Set)
- Disjoint-Set并查集
- 数据结构 之 并查集(Disjoint Set)
- 并查集(disjoint set)的实现及应用
- 并查集(disjoint-set forests)
- 并查集(disjoint set)结构介绍
- Disjoint set(并查集) data structure
- 并查集(Union-find Sets)
- Disjoint Sets
- 利用并查集(Disjoint Set)解决一道算法题
- HDU 1232 畅通工程(并查集Disjoint Set 经典)
- disjoint set (union-find set) (并查集)
- 好的数据算法的博客
- 访问需要HTTP Basic Authentication认证的资源的各种语言的实现
- AppDomain详解
- 什么是A类、B类、C类地址?
- CentOS下快速搭建LAMP环境
- Disjoint sets(并查集)
- (HDUStep 1.2.7)IBM Minus One(字符串运算)
- Mybatis学习笔记
- memcached 学习
- Yii中ajax提交注意事项
- 通识基础_正负数二进制的表示
- 编程规范的笔记
- Hibernate主键生成策略
- 用MySQL创建数据库和数据库表