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

31.Acwing基础课第836题-简单-合并集合

31.Acwing基础课第836题-简单-合并集合

题目描述

一共有 n个数,编号是 1∼n,最开始每个数各自在一个集合中。

现在要进行 m 个操作,操作共有两种:

  1. M a b,将编号为 a 和 b 的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作;
  2. Q a b,询问编号为 a 和 b 的两个数是否在同一个集合中;

输入格式

第一行输入整数 n 和 m。

接下来 m 行,每行包含一个操作指令,指令为 M a bQ a b 中的一种。

输出格式

对于每个询问指令 Q a b,都要输出一个结果,如果 a 和 b 在同一集合内,则输出 Yes,否则输出 No

每个结果占一行。

数据范围

1≤n,m≤105

输入样例:

4 5
M 1 2
M 3 4
Q 1 2
Q 1 3
Q 3 4

输出样例:

Yes
No
Yes

代码:

#include <iostream>
using namespace std;const int N = 100010;  // 定义数组最大容量,适配题目数据范围(1e5级别)
int n,m;               // n:元素总数;m:操作次数
int p[N];              // 并查集核心数组:p[x] 表示 x 的父节点int find(int x)//返回x的祖宗节点 + 路径压缩
{if(p[x] != x) p[x] = find(p[x]);  // 递归找祖宗,并把x的父节点直接指向祖宗(路径压缩)return p[x];                      // 返回x的祖宗节点
}int main()
{scanf("%d%d", &n, &m);  // 读入元素总数n,操作次数m(用scanf比cin快,适配大数据)// 初始化并查集:每个元素的父节点是自己,自成一个集合for(int i = 1; i <= n; i++) p[i] = i;while(m--)  // 处理m次操作{int a, b;char op[2];  // 存储操作符(如'M'/'Q'),用数组避免字符读取问题scanf("%s%d%d", op, &a, &b);  // 读入操作符、两个元素a和bif(op[0] == 'M')  // 合并操作:把a的祖宗节点的父节点指向b的祖宗节点p[find(a)] = find(b);else  // 查询操作:判断a和b是否同属一个集合(祖宗是否相同){if(find(a) == find(b)) puts("Yes");else puts("No");}}return 0;
}
http://www.jsqmd.com/news/592499/

相关文章:

  • i1Profiler高级模式实战:从‘能用’到‘精通’,打造专业级打印ICC配置文件
  • 5大核心优势打造游戏化编程学习新体验:CodeCombat全攻略
  • 实战演练:基于快马ai一键生成spring cloud微服务全栈开发环境
  • REINVENT4智能设计:AI驱动的药物分子优化平台技术指南
  • 革新性Steam游戏库管理工具:Depressurizer效率提升指南
  • 系统资源诊断与性能优化:使用Hotkey Detective实现高效热键冲突管理
  • 猫抓扩展终极指南:如何智能命名下载文件,告别杂乱无章
  • 量子机器学习实战:在快马平台使用qorder构建分类器解决真实问题
  • Legacy iOS Kit终极指南:5步轻松降级旧款iPhone/iPad系统
  • 智能配置引擎:开源系统硬件适配的效率革命
  • 3大模块彻底解决Win11卡顿问题:从诊断到优化的全流程指南
  • OpenClaw健康监控方案:Qwen3.5-9B-AWQ-4bit异常预警设置
  • Windows Defender管理终极方案:Defender Control深度解析与实战配置指南
  • 系统性能瓶颈如何突破?Win11Debloat让老旧电脑焕发新生的实战指南
  • 发现magnetW:跨平台资源聚合搜索工具的高效探索
  • Blender四边形网格重构终极指南:5分钟掌握QRemeshify插件
  • TrueCrypt隐藏分区机制详解:为什么你的‘密码’和‘主密钥’解密结果会不同?
  • 从电路角度理解Verilog:为什么always里要用非阻塞赋值?for循环真的‘贵’吗?
  • ncmdumpGUI:彻底解决网易云音乐NCM格式限制的图形化工具
  • Source Han Serif CN 字体架构深度解析与跨平台应用优化实践
  • GetQzonehistory:时光魔法盒,一键找回遗失的QQ空间青春记忆
  • 养护之心:超越“出世/入世”二分,重思儒释道的精神功能
  • 如何突破抢票瓶颈?DamaiHelper智能工具让热门演出门票不再难抢
  • 3大场景攻克B站视频下载:Downkyi全功能实战指南
  • Vivado探针+串口Debug:实战调试Xilinx Zynq MPSoC HDMI 2.1 8K@60链路状态
  • 革新性GTA5增强工具:YimMenu全方位安全防护与体验优化实战指南
  • cv_unet_image-colorization模型解析:深入理解卷积神经网络架构
  • MPI与OpenMP混合编程实战:从线程安全到NUMA优化的完整指南
  • Python+Selenium实战:构建毫秒级响应的大麦网抢票自动化系统
  • ComfyUI-Manager 插件管理完全指南:从环境配置到高级优化