并查集
来源:互联网 发布:淘宝760的lamy2000 编辑:程序博客网 时间:2024/06/05 17:42
并查集作用:
1.判断两节点是否联通
2.连接两个节点,使之联通
并查集数据结构:
多路树结构
例:
存储结构:
数组模拟:设数组为pre[i]
i为当前节点,pre[i]则为i节点所指向的父节点
那么判断两个节点是否联通就可以判断两节点的最终指向的父节点是否一样。
联通两个并查集,也变得很简单,两个并查集的最终父节点肯定是不同的,那么连接两个并查集就可以只要将其中一个并查集的最终父节点指向另一个并查集的父节点。
最终代码如下:
package 并查集;import java.util.Scanner;public class Main { public static final int NUMBER = 1000; //pre代表,此下标 i 的父节点下标为 pre[i] static int pre[] = new int[NUMBER+5]; //初始化父节点为自己本身 public static void initPre(){ for(int i=0;i<=NUMBER;++i) pre[i]=i; } //找出最大父节点,并更新节点 public static int findSet(int x){ int p = x; while(pre[p]!=p) p=pre[p]; //此时找出的p就是x的最大父节点 int r; //更新x的父节点 while(x!=p){ r = pre[x]; pre[x] = p; x = r; } return p; } //判断是否是在一个并查集上 public static boolean isSameSet(int x,int y){ int fx = findSet(x); int fy = findSet(y); return fx==fy ? true:false; } //连接两个并查集 public static void unionSet(int x,int y){ int fx = findSet(x); int fy = findSet(y); //连接两个并查集 if(fx!=fy){ pre[fy]=fx; } } public static void main(String[] args) { }}
阅读全文
0 0
- HDU3938 并查集 并查集
- 并查集(集并查)
- HDU1232 并查集<并>
- 并查集
- 数据结构-并查集
- 并查集
- 并查集!
- 并查集
- 并查集
- 并查集
- 并查集
- 并查集总结
- 并查集学习
- 并查集
- 并查集
- 并查集
- 所谓并查集
- 并查集
- 拷贝文件的时候显示进度
- 修改nginx 和 apache的最大上传文件大小
- jsonp详解
- 说说过去,现状与未来定位
- Git-将已有的项目转换为GIT项目托管到 GITHUB 仓库
- 并查集
- springboot maven指定jar包的选择
- ubuntu17.04 使用 steam 玩游戏时字体无显示解决办法
- 图片间有空隙的解决方法
- HDU5806 NanoApe Loves Sequence Ⅱ【尺取法+乘法原理】
- PX4代码学习系列博客(2)——PX4与实时操作系统
- 逻辑运算符 或 与 非 位运算
- 滚动数组
- UVALive6336 HDU4450 Draw Something【水题】