当前位置:网站首页>Template series-union set
Template series-union set
2022-08-02 16:08:00 【Stubborn and cute】
并查集模板
1、初始化
void init{
for(int i=1;i<=n;i++){
fa[i]=i;//把结点iThe set number of is initialized to its own number
}
}
2、查找
版本一:
int find(int i){
while(i!=pi[i]){
i=pi[i]=pi[pi[i]];
}
return pi[i];
}
版本二:
int find(int x) {
if(x != fa[x]){
//当xNot equal to its dad(when it is an ancestor,it has no dad)
fa[x] = find(fa[x]);//Keep looking for his dad's dad
}
return fa[x];//返回祖先
}//查找
3、合并
void unity(int x, int y){
int r1 = find(x);//找到x的祖先
int r2 = find(y);//找到y的祖先
if(r1!=r2){
fa[r1] = r2;//Ancestors and ancestors become father and son(Anyone can be a father or a son)
}
}//合并
边栏推荐
猜你喜欢
随机推荐
理解:野指针,空指针,失效指针。
光导布局设计工具
优先级表和Ascll表
【进程间通信】信号量的使用/共享内存
锥形相位掩模的Talbot图像
消息队列的技术选型
光波导应用中的真实光栅效应
戴森球计划这个游戏牛逼
How does ns3 solve cross reference issue
golang-reflect-method-callback
Unity中事件的3种实现方法
双链表(普通迭代器和常性迭代器)
Run ns3 with multiple processes
仿真结果的格式&定制
Doubly linked list (normal iterators and const iterators)
数学工具-desmos 图形曲线
SkyWalking Agent数据采集和上报原理浅析
使用三个线程,按顺序打印X,Y,Z,连续打印10次
关于分布式的一些知识点
Qt | 串口通信 QSerialPort