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

【数据结构】可撤销并查集 - Slayer

可撤销并查集只可以按照加入的时间从后到前撤销加边操作。

具体的,我们会把所有加入的边压入一个栈,然后当什么时候要撤销时不断从栈顶弹出一条边,撤销掉。而至于具体的撤销步骤,我们假设此边原来是把 y 连向 x,那么我们直接把 y 的父亲设为 y 本身,因为在合并两个集合时是把两个端点都执行了一遍找祖先的操作,所以 y 必定作为其原集合的祖先。我们再把 x 的子树大小减去一个 y 的子树大小,那么就还原成功了。

那么对于一条边为什么一定要是有顺序的撤销呢?如果不是按出栈的顺序撤销,那么必定有比他晚一些连边的集合的大小没法维护,所以必须按出栈顺序撤销。

fromzac

int find(int x){return x==fa[x]:x:find(fa[x]);}void merge(int u,int v){int fu=find(u),fv=find(v);if(fu==fv){return ;}if(sz[fu]<sz[fv]){swap(fu,fv);}stk[++top]=fv;fa[fv]=fu;sz[fu]+=sz[fv];
}void del(){if(!top)return  ;int v=stk[top];top--;sz[fa[fv]]-=sz[fv];fa[fv]=fv;
}while(top>tmp)del();
http://www.zskr.cn/news/17837.html

相关文章:

  • 【题解】P11459 [USACO24DEC] Its Mooin Time P
  • 创建一个springboot项目,mybatis连接嵌入式数据库H2,实现增删改查功能
  • 基于众包的产品质量比较与推荐算法研究
  • 10/9
  • 线程池总结
  • 深入解析:一款相机是只有桶形畸变 和 枕形畸变的一种,还是两个都有?
  • WPF Epplus export 10M+ items in excel with multiple sheets batch by batch
  • CF2152G Query Jungle
  • 下好多雨
  • 戴尔电脑开机出现supportassist怎么办_戴尔电脑开机出现supportassist多种解决优秀的方法
  • 项目经理常见面试题7:作为项目经理,你如何协调项目中不同角色(构建、测试、产品)的矛盾?
  • 由等概率(a,b)生成等概率(c,d)
  • 详细介绍:C#练习题——泛型实现单例模式和增删改查
  • 运行Udacity的MPC控制项目指南(project_10)在Ubuntu 18.04环境下
  • 网络流最小割,无向图建图法,求最小割点转换求最小割边
  • 2025/10/9
  • 深度学习概述 - -一叶知秋
  • C#性能优化基础:内存诊断(dump)
  • 2025年企业级LLM内容安全防护指南:鉴冰AI FENCE流式网关技术深度解析
  • 完整教程:FPGA学习笔记——图像处理之亮度调节(Gamma)
  • IObit Uninstaller一款强大的卸载工具!IObit Uninstaller卸载工具,IObit Uninstaller下载安装教程
  • 网络配置不再难:4G/Wi-Fi/以太网/虚拟网卡全指南
  • 一种排查java.lang.OutOfMemoryError: Metaspace的方法
  • MDX Blog Post
  • 本站点即将在2025年改变研究方向和目标
  • 实用指南:12_OkHttp初体验
  • 乒乓球
  • wmctf2025
  • Java基础-Eclipse工具-面向对象(1)
  • Qwen3技术报告