当前位置: 首页 > news >正文

并查集进阶

a5227caa87c0f9ea0eba023d6cfd1c4a
//可持久化并查集
#include <bits/stdc++.h>
using namespace std;
int n,m,t;
struct Tree{int T[200005],st[200005];//T[]表示i次操作后的根 int ls[200005<<5],rs[200005<<5],val[200005<<5];int cnt;int build(int l,int r){int now=++cnt;if(l==r){val[now]=st[l];return now;}int mid=(l+r)/2;ls[now]=build(l,mid);rs[now]=build(mid+1,r);return now;}int upload(int pt,int l,int r,int id,int x){//单点赋值 int now=++cnt;ls[now]=ls[pt];rs[now]=rs[pt];if(l==r){val[now]=x;return now;}int mid=(l+r)/2;if(id<=mid){ls[now]=upload(ls[pt],l,mid,id,x);}else{rs[now]=upload(rs[pt],mid+1,r,id,x);}return now;}int query(int rt,int l,int r,int id){//单点查询 if(l==r){return val[rt];}int mid=(l+r)/2;if(id<=mid){return query(ls[rt],l,mid,id);}else{return query(rs[rt],mid+1,r,id);}}
}fa,siz;
int Find(int x){while(fa.query(fa.T[t],1,n,x)!=x){x=fa.query(fa.T[t],1,n,x);}return x;
}
void merge(int x,int y){int a=Find(x);int b=Find(y);if(a==b){return;}int fx=siz.query(siz.T[t],1,n,a),fy=siz.query(siz.T[t],1,n,b);if(fx<=fy){fa.T[t]=fa.upload(fa.T[t],1,n,a,b);siz.T[t]=siz.upload(siz.T[t],1,n,b,fx+fy);}else{fa.T[t]=fa.upload(fa.T[t],1,n,b,a);siz.T[t]=siz.upload(siz.T[t],1,n,a,fx+fy);}
}
signed main(){ios::sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=n;i++){fa.st[i]=i;}fa.T[0]=fa.build(1,n);for(int i=1;i<=n;i++){siz.st[i]=1;}siz.T[0]=siz.build(1,n);int opt,x,y;for(t=1;t<=m;t++){cin>>opt;fa.T[t]=fa.T[t-1];siz.T[t]=siz.T[t-1];if(opt==1){cin>>x>>y;merge(x,y);}else if(opt==2){cin>>x;fa.T[t]=fa.T[x];siz.T[t]=siz.T[x];}else{cin>>x>>y;if(Find(x)==Find(y)){cout<<1<<endl;continue;}cout<<0<<endl;}}return 0;
}

 

http://www.jsqmd.com/news/384931/

相关文章:

  • mysql的概述
  • 【Harmonyos】开源鸿蒙跨平台训练营DAY2:多终端工程创建运行、代码提交至AtomGit平台自建公开仓库全流程(附带出现问题及解决手段)
  • 【OI】传奇鬼王——SPFA
  • 2026恶臭在线监测设备选购大盘点:实力厂家排行及采购建议 - 品牌推荐大师1
  • 日常被豆包怼
  • 21.行为型 - 状态模式 (State Pattern)
  • 基于深度学习的浅层与深层血流速率分离技术:弥散相关光谱学的Python实现
  • Netty 快速入门一则
  • 龙虾机器人(OpenClaw)本地部署完全技术指南
  • 生产环境CSS原生瀑布流来了!最佳实践与性能优化
  • 【OI】传奇脆皮王2——SPFA
  • 力扣 hot100 【洗刷耻辱】
  • 使用 Python + 百度翻译 批量翻译 ArcGIS Shapefile 字段
  • 基于SSM的中诚房屋中介管理系统[SSM]-计算机毕业设计源码+LW文档
  • STM32F1介绍 - LI,Yi
  • 开放式厨房适合用集成灶吗?选哪个牌子好?2025选购指南出炉 - 匠言榜单
  • Springboot3+vue3软件商城共享系统 软件公司的售前售后服务系统
  • 【CVPR 2025即插即用】卷积模块篇 | GBConv轻量级门控瓶颈卷积,适合图像分类、目标检测、实例分割、语义分割、图像去噪、边缘检测、医学图像分割、遥感目标检测等CV任务通用,涨点起飞
  • 使用BEiT模型进行CIFAR-100图像分类:迁移学习实战指南
  • 2000-2024年上市公司党组织参与公司治理数据+代码
  • 2003-2024年地级市大数据采集和处理能力
  • 【前端开发之JavaScript】(三)JS基础语法中篇:运算符 / 条件 / 循环 / 数组一网打尽
  • 关于Linux系统进程
  • 使用Jenkins部署后端项目(Maven)
  • Jenkins如何导入/导出插件
  • Android Studio汉化备忘
  • agentscope怎么在对话的时候调用记忆的
  • WinForms:菜单控件ToolStripMenuItem详解
  • 少走弯路:9个AI论文软件测评!研究生毕业论文写作必备工具推荐
  • 题解:ABC445F Exactly K Steps 2