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

第3讲——并查集

常见操作:

两个集合;

找某个元素属于哪个集合;

方法一:

用最小元素标记所在集合

//查找 find1(x) { return set[x];//每个元素指向共同的老大; } //o(1); //合并 Merge1(a,b) { i=min(a,b); j=max(a,b); for(k=1;k<=N;k++)//遍历所有元素 { if(Set[k]==j) Set[k]=i; } } //o(n);

方法二:

每个集合用一颗有根树表示

//查找 find2(x) { r=x; while(Set[r]!=r) r=Set[r];//一直往上找,直到找到自己的老大; return r; } //最坏o(n); //合并 merge2(a,b) { set[a]=b; } //o(1);

避免最坏情况:

方法:将深度小的树合并到深度大的树;

//查找 find2(x) { r=x; while(set[r]!=r) r=set[r]; return r; } //合并 merge3(a,b) { if(height(a)==height(b)){ height(a)=height(a)+1; set[b]=a;} else if(height(a)<height(b)) set[a]=b; else set[b]=a; }

方法三:

带路径压缩的查找

find3(x) { if(set[x]!=x) set[x]=find3(set[x]); return set[x]; }

例题:

#include <stdio.h> int bin[1002]; int findx(int x) { int r=x; while(bin[r]!=r) r=bin[r]; return r; } void merge(int x,int y) { int fx,fy; fx=findx(x); fy=findx(y); if(fx!=fy) bin[fx]=fy; } int main() { int n,m,i,x,y,cnt; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) bin[i]=i; for(scanf

经典应用:

最小生成树

如何求

(1)prime算法

(2)kruskal算法

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

相关文章:

  • 探店无数,平凉这口五仁月饼最难忘
  • AI Agents:正在爆发的“代理经济“时代
  • 从‘?’命令到调试高手:Lumerical FDTD脚本排错与数据验证实战指南
  • LLM服务SLO崩塌前的最后17分钟:如何通过流式token监控+语义一致性校验实现亚秒级异常预判
  • 工具技术集成开发环境IDE与轻量级编辑器的选择标准
  • 快递查询-物流查询-快递物流查询接口介绍
  • 2026年金融学论文降AI工具推荐:数据分析和金融模型部分如何降
  • C语言条件编译三种方式及第一种方式的格式、作用与示例
  • Unity URP 下 UI 特效开发指南 深入探索顶点色、Mask 交互与扭曲特效的实战技巧
  • 程序包javax.validation.constraints不存在
  • 控制系统幅频特性曲线绘制实战指南(2)
  • New API:企业级AI模型路由与智能管控解决方案
  • rCore入门-来自清华的OS前沿教程
  • 手把手教你学Simulink——基于Simulink的开关电容变换器电压均衡控制
  • Redis Cluster 扩容策略分析
  • Beam Search实战解析:从参数调优到生成效果对比
  • 二叉树层序遍历
  • 终极家庭音乐体验优化指南:打造智能跨平台音乐管理方案
  • 树莓派上更换镜像源的方法
  • MacOS•\APPstore/-help•〈file,ssh=-fi〉
  • 为什么降AI后某些段落AI率反而升高:降AI副作用分析
  • 周红伟:Herems到底凭什么抢了OpenClaw的风头?
  • RocketMQ实战:从订单超时到死信队列,我是如何设计零丢失消息系统的
  • MoveIt!与OMPL实战避坑:为什么你的机械臂规划总失败?可能是算法没选对
  • 宜昌考研保研新风向:2026这些学校口碑不错,学历提升/考研/艺术设计培训/考证/提分,考研培训机构哪家好 - 品牌推荐师
  • esp32c3和电容触摸屏的显示
  • 应对2026论文查重:3款主流降AI工具测评+3个人工微调技巧,告别无效盲改!
  • 手把手教你学Simulink——基于Simulink的三端口隔离型DC-DC变换器能量管理
  • Windows 10 上构建企业级SFTP文件服务器【实战指南】
  • 帝国时代4修改器 风灵月影十一项 支持1.0-v10.0.576版本