并查集的不同写法

简介: 并查集的不同写法
#define MAX_SIZE 100005  
int pa[MAX_SIZE];        //存储有向图的边
 
void init()     //初始化 该函数可以根据具体情况保存和初始化需要的内容  
{  
  for(int i = 0; i < MAX_SIZE; i++)  
  {  
    pa[i] = i;  
  } 
}  
 
int find(int a) //不带路劲压缩  
{  
  while(pa[a] != a)  
    a = pa[a];  
  return a;  
}  
 
void merge(int a, int b)      //集合合并  
{  
  int a1 = find(a);  
  int b1 = find(b);
  if(a1 != b1)    //这个判定条件可选,主要是为了防止find路径压缩的时候出现死循环
    pa[a1] = b1;    //如果存的是有向图,并且做题时集合中元素的顺序很重要,不能忽略,那么这里应该用"pa[a] = b;" 
} 

路经压缩

while写法

int find(int x)      //找元素所在集合的代表元(因为用了路径压缩,路径压缩的主要目的是为了尽快的确定元素所在的集合)  
{  
  int t1,t2=x;
  while(x!=p[x])  
    x=p[x];  
  while(t2!=p[t2])        //这里优化的思路还是路径压缩(进一步的在查找函数执行的过程中压缩路径)
  {  
    t1=p[t2];  
    p[t2]=x;  
    t2=t1;  
  }  
  return x;  
} 

递归写法

int find(int x)  
{  
  if(p[x] != x)  
  {         
    int root = find(p[x]);   
    return p[x] = root;  
  }  
  else  
    return x;  
}  
目录
相关文章
|
C语言 Windows
使用CMake调用Makefile 项目
使用CMake调用Makefile 项目
266 0
|
10月前
|
存储 缓存 NoSQL
一篇搞懂!Java对象序列化与反序列化的底层逻辑
本文介绍了Java中的序列化与反序列化,包括基本概念、应用场景、实现方式及注意事项。序列化是将对象转换为字节流,便于存储和传输;反序列化则是将字节流还原为对象。文中详细讲解了实现序列化的步骤,以及常见的反序列化失败原因和最佳实践。通过实例和代码示例,帮助读者更好地理解和应用这一重要技术。
420 0
|
存储 Linux 文件存储
Linux 存储管理 (二)创建文件系统
【8月更文挑战第13天】使用`fdisk`创建分区后,通过`mkfs`命令创建文件系统,支持多种类型如ext4、XFS等。创建前确认分区无重要数据,示例命令为`mkfs.ext4 /dev/sdc1`。之后使用`mount`命令将分区挂载至指定目录,如`mount /dev/sdc1 /w`。为实现开机自动挂载,可在`/etc/fstab`文件中添加相应条目。这些步骤有助于高效管理和利用存储空间。
275 2
|
9月前
|
存储 API
鸿蒙元服务项目实战:终结篇之备忘录搜索功能实现
开发元服务,有很多的限制性因素,比如包的大小限制,相关API限制,所以,我们在实际开发的时候,具体Api能否使用,还需要去官网查看一下,目前,针对当前这个小项目,总结了几个小问题,大家在开发的过程中可以作为参考。
170 2
鸿蒙元服务项目实战:终结篇之备忘录搜索功能实现
|
9月前
|
Dart 索引
鸿蒙应用开发从入门到入行 - 篇8:Tabs选项卡页签视图切换
在本篇文章里,您将掌握使用Tabs选项卡做栏目分类,这是未来应用开发中极为常用的组件
258 7
鸿蒙应用开发从入门到入行 - 篇8:Tabs选项卡页签视图切换
|
网络架构
小区搜索过程
小区搜索是终端通过同步信号块SSB与小区建立联系的过程,包括取得小区下行频率、时间同步、检测小区识别号CellID、通过解码广播信道BCH上的系统信息。下行同步包括频率、符号和帧同步。
372 0
小区搜索过程
|
消息中间件 Java 关系型数据库
线上远程京东技术三面+HR面,五月中旬成功就职京东,月薪30K
由于今年的疫情影响,很多互联网大厂公司都采用线上远程面试的方法来挑选人才,很多幸运的小伙伴也是已经拿到大厂的offer了,今天给大家分享的是我之前公司同事拿到京东offer的朋友的面试经历,疫情虽然已经好转,但是还有很多朋友是在线上办公的,然后我去问到了我这个朋友京东面试的一些真题,以及我整理的一些真题分享给大家,希望可以还在找工作的伙伴提供到帮助,同时也祝大家都能收获自己的心仪 “offer” 吧!
|
算法 Java UED
深入解析CMS垃圾回收器
在CMS之前的垃圾回收器,要么就是串行垃圾回收方式,要么就是关注系统吞吐量,而 CMS 垃圾回收器的出现,则打破了这个尴尬的局面。
488 0
深入解析CMS垃圾回收器
|
数据安全/隐私保护 Android开发
Javaweb项目碰到的问题- Access denied for user 'root'@'localhost' (using password: YES)
Javaweb项目碰到的问题- Access denied for user 'root'@'localhost' (using password: YES)
476 0