并查集

来源:互联网 发布:PHP代码中常用的方法 编辑:程序博客网 时间:2024/06/07 10:01

在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。


#define N 1050int Father[N];int Getfather(int num){//return Father[num] == num ? num : Getfather(Father[num]);// 获取父节点,不带路径压缩 return Father[num] == num ? num : Father[num] = Getfather(Father[num]);// 获取父节点,带路径压缩 }bool Join(int start, int end){//如果在同一个集合内,返回1;否则将两个集合合并为一个集合,并返回0int a = Getfather(start);// 获取父节点 int b = Getfather(end);if(a == b){return 1;}else{Father[a] = b;// 合并、建立关系 return 0;}}



原创粉丝点击