图论算法-并查集
来源:互联网 发布:软件行业发展趋势 编辑:程序博客网 时间:2024/06/04 20:12
初始化把set所有值设为-1(都是根),合并两个集合的时候,先用find函数找出各个集合的根,寻找根的时候利用递归进行路径压缩,都指向根结点。
合并的时候先比较规模,由于是负数,更大值更小。
void Union( SetType S, SetName Root1, SetName Root2 ){ /* 这里默认Root1和Root2是不同集合的根结点 */ /* 保证小集合并入大集合 */ if ( S[Root2] < S[Root1] ) { /* 如果集合2比较大 */ S[Root2] += S[Root1]; /* 集合1并入集合2 */ S[Root1] = Root2; } else { /* 如果集合1比较大 */ S[Root1] += S[Root2]; /* 集合2并入集合1 */ S[Root2] = Root1; }} SetName Find( SetType S, ElementType X ){ /* 默认集合元素全部初始化为-1 */ if ( S[X] < 0 ) /* 找到集合的根 */ return X; else return S[X] = Find( S, S[X] ); /* 路径压缩 */}
0 0
- 图论算法-并查集
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 算法-并查集
- 并查集算法
- 并查集算法
- 并查集算法
- 并查集算法
- 图算法小结(并查集)
- Kotlin语言入门
- 高斯白噪声
- Android 使用服务注册广播接收者
- 关于getDeclaredMethod方法的用法
- js生成二维码
- 图论算法-并查集
- 报错分析__error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression
- 设计模式随笔之状态模式(State)
- Java可变长参数varargus
- 如何实现复杂的listview的效果
- 修改Ubuntu/Linux终端显示的路径长度
- Android中判断网络是否可用的代码分享
- C++ 消息(成员函数调用)的动态绑定
- leetcode 338. Counting Bits