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

C++:合并集合(并查集)

合并集合

一共有n个数,编号是1~n,最开始每个数各自在一个集合中。
现在要进行m个操作,操作共有2种:
1.“M a b”,将编号为a和b的两个数的所在的集合合并,如果两个数已经在同一个集合中则忽略这个操作
2.“Q a b”,询问编号为a和b的两个数是否在同一个集合中

输入格式

第一行输入整数n和m
接下来m行,每行包含一个操作指令,指令为"M a b"或"Q a b"的一种

输出格式

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

数据范围

1 ≤ n , m ≤ 1 0 5 1\le n,m\le 10^5 1n,m105

输入样例

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

输出样例

Yes
No
Yes

问题分析

并查集(DSU,Disjoint Set Union)
1.将两个集合合并
2.询问两个元素是否在一个集合中
基本原理:每个集合用一棵树来表示。树根的编号就是整个集合的编号。每个结点存储它的父结点,p[x]表示x的父结点

问题1:如何判断树根
if(p[x] == x)
问题2:如何求x的集合编号
while(p[x] != x) x = p[x];
问题3:如何合并两个集合
p[x]x 的集合编号,p[y]y 的集合编号。p[x] = y

优化:路径压缩

AC代码

#include<iostream>
using namespace std;const int N = 1e5 + 10;int n, m;
int p[N];int find(int x) {	// 返回 x 的祖宗结点 + 路径压缩if(p[x] != x) p[x] = find(p[x]);return p[x];
}int main() {scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++) p[i] = i;while(m--) {char op[2];int a, b;scanf("%s%d%d", op, &a, &b);if(op[0] == 'M') p[find(a)] = find(b);else {if(find(a) == find(b)) puts("Yes");else puts("No");}}return 0;
}

相关文章:

C++:合并集合(并查集)

合并集合 一共有n个数&#xff0c;编号是1~n&#xff0c;最开始每个数各自在一个集合中。 现在要进行m个操作&#xff0c;操作共有2种&#xff1a; 1.“M a b”&#xff0c;将编号为a和b的两个数的所在的集合合并&#xff0c;如果两个数已经在同一个集合中则忽略这个操作 2.“…...

【LeetCode】数据结构题解(10)[有效的括号]

有效的括号 &#x1f609; 1.题目来源&#x1f440;2.题目描述&#x1f914;3.解题思路&#x1f973;4.代码展示 &#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1f618;&#x1…...

5G用户逼近7亿,5G发展迈入下半场!

尽管普遍认为5G投资高峰期正在过去&#xff0c;但是从2023年上半年的情况来看&#xff0c;我国5G建设仍在衔枚疾走。 近日举行2023年上半年工业和信息化发展情况新闻发布会上&#xff0c;工信部人士透露&#xff0c;截至今年6月底&#xff0c;我国5G基站累计达到293.7万个&…...

分布式问题

1. 分布式系统CAP原理 CAP原理&#xff1a;指在一个分布式系统中&#xff0c;Consistency&#xff08;一致性&#xff09;、Availability&#xff08;可用性&#xff09;、Partitontolerance&#xff08;分区容忍性&#xff09;&#xff0c;三者不可得兼。 一致性&#xff08;C…...

教雅川学缠论06-中枢

本系列文章之前讲的内容都只有上升和下降两类趋势&#xff0c;并没有提及盘整&#xff0c;在缠论中&#xff0c;中枢这个新词汇用来定义盘整&#xff0c;中枢&#xff1a; 1.至少由5条线段&#xff08;或笔&#xff09;组成 2.中枢是有方向的&#xff0c;中枢左右两侧外面的线&…...

如何调教让chatgpt读取自己的数据文件(保姆级图文教程)

提示&#xff1a;如何调教让chatgpt读取自己的数据文件(保姆级图文教程) 文章目录 前言一、如何投喂自己的数据&#xff1f;二、调教步骤总结 前言 chatgpt提示不能读取我们提供的数据文件&#xff0c;我们应该对它进行调教。 一、如何投喂自己的数据&#xff1f; 让chatgpt读…...

React Native Camera的使用

介绍 React Native Camera是一个用于在React Native应用中实现相机功能的库。它允许你访问设备的摄像头&#xff0c;并捕获照片和视频。 使用 安装 npm install react-native-camera --save 安装完成后&#xff0c;你需要链接React Native Camera库到你的项目中。可以使用以…...

【Matlab】Elman神经网络遗传算法(Elman-GA)函数极值寻优——非线性函数求极值

往期博客&#x1f449; 【Matlab】BP神经网络遗传算法(BP-GA)函数极值寻优——非线性函数求极值 【Matlab】GRNN神经网络遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值 【Matlab】RBF神经网络遗传算法(RBF-GA)函数极值寻优——非线性函数求极值 本篇博客将主要介绍Elman神…...

@ControllerAdvice注解使用及原理探究 | 京东物流技术团队

最近在新项目的开发过程中&#xff0c;遇到了个问题&#xff0c;需要将一些异常的业务流程返回给前端&#xff0c;需要提供给前端不同的响应码&#xff0c;前端再在次基础上做提示语言的国际化适配。这些异常流程涉及业务层和控制层的各个地方&#xff0c;如果每个地方都写一些…...

Error: Design has unresolved cell reference

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 所有的unresolved cell reference问题都是cell信息没读到引起的&#xff0c;在dc/pt里就是db没读到&#xff0c;在ICC2里就是ndm没读。 ICC2中午饭这个问题可以report_design_…...

uni-app 封装api请求

前端封装api请求 前端封装 API 请求可以提高代码的可维护性和重用性&#xff0c;同时使得 API 调用更加简洁和易用。 下面是一种常见的前端封装 API 请求的方式&#xff1a; 创建一个 API 封装模块或类&#xff1a;可以使用 JavaScript 或 TypeScript 创建一个独立的模块或类来…...

SpringCloud实用篇1——eureka注册中心 Ribbon负载均衡原理 nacos注册中心

目录 1 微服务1.1 微服务的演变1.2 微服务1.3 SpringCloud1.4 小结 2 服务拆分及远程调用2.1 服务拆分2.2 服务拆分案例2.3 实现远程调用2.4 提供者与消费者 3 Eureka注册中心3.1 Eureka的结构和作用3.2 搭建eureka-server3.3 服务注册3.4 服务发现 4 Ribbon负载均衡4.1 负载均…...

【MySQL】sql字段约束

在MySQL中&#xff0c;我们需要存储的数据在特定的场景中需要不同的约束。当新插入的数据违背了该字段的约束字段&#xff0c;MySQL会直接禁止插入。 数据类型也是一种约束&#xff0c;但数据类型这个约束太过单一&#xff1b;比如我需要存储的是一个序号&#xff0c;那就不可…...

森海塞尔为 CUPRA 首款纯电轿跑 SUV – CUPRA Tavascan 注入音频魅力

森海塞尔为 CUPRA 首款纯电轿跑 SUV – CUPRA Tavascan 注入音频魅力 音频专家森海塞尔携手富有挑战精神的 CUPRA&#xff0c;雕琢时代新贵车型&#xff0c;打造畅快尽兴的驾驶体验 全球知名音频专家森海塞尔与以颠覆传统、充满激情、不甘现状而闻名的汽车品牌 CUPRA 展开合作…...

Java、Android 加解密、编码、压缩、解压缩、Hash

对称加密&#xff1a; 算法:AES &#xff08;128位&#xff09;/ DES &#xff08;56位&#xff09;....等 加密原理&#xff1a; 原数据--->加密算法(密钥)------>密文 解密原理&#xff1a; 密文---->解密算法(密钥)------>原数据 非对称加密 算法&#…...

11_Pulsar Adaptors适配器、kafka适配器、Spark适配器

2.3. Pulsar Adaptors适配器 2.3.1.kafka适配器 2.3.2.Spark适配器 2.3. Pulsar Adaptors适配器 2.3.1.kafka适配器 Pulsar 为使用 Apache Kafka Java 客户端 API 编写的应用程序提供了一个简单的解决方案。 在生产者中, 如果想不改变原有kafka的代码架构, 就切换到Pulsar的…...

jupyter文档转换成markdown

背景 上一篇文章**《如何优雅地用python生成模拟数据》**我就使用jupyter写的&#xff0c;这个真的是万能的&#xff0c;可以插入markdown格式的内容&#xff0c;也可写代码&#xff0c;关键是像ipython一样&#xff0c;可以分步执行。 我可以这样自由的写我的博客内容&#x…...

日志框架及其使用方法

log4j和logBack,同一个人写的&#xff0c;logBack为log4j的升级版&#xff0c;SpringBoot中默认集成logBack 作用&#xff1a;记录软件发布后的一些bug,以及数据是怎样被操作的 传统开发弊端&#xff1a; 1.日志直接输出在控制台&#xff0c;关闭控制台后&#xff0c;日志消…...

ZIG:理解未来编程语言的视角

文章目录 摘要&#xff1a;引言&#xff1a;性能简洁性和模块化避免常见错误和陷阱总结&#xff1a;参考资料&#x1f4d1;: 摘要&#xff1a; 本文介绍了新兴编程语言ZIG的目标和特点&#xff0c;包括高性能、简洁性和模块化&#xff0c;并分析了这些特点是如何通过语言设计来…...

让三驾马车奔腾:华为如何推动空间智能化发展?

上个月&#xff0c;国务院常务会议审议通过了《关于促进家居消费的若干措施》&#xff0c;其中明确提出了“推动单品智能向全屋智能发展创新培育智能消费”“开展数字家庭建设试点”等推动全屋智能拼配发展的建议与方案。 可以说&#xff0c;以整屋为单位的空间智能品类&#x…...

2022年03月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 已知a“161”&#xff0c;b“16”&#xff0c;c“8”,执行语句da>b and a>c&#xff0c;变量d的值为是&#xff1f; A&#xff1a;0 B&#xff1a;1 C&#xff1a;True D&am…...

WIN大恒工业相机SDK开发

大恒工业相机SDK开发概览 一、开发环境搭建1、C# 环境配置&#xff08;VS2019&#xff09;2、C 环境配置&#xff08;VS2019&#xff09;3、python 环境配置&#xff08;Pycharm&#xff09; 二、相机二次开发流程三、相机相机属性参数配置四、图像采集单帧采集回调采集 注意事…...

qt qml中各种Layout之间是如何对齐的?

问题描述&#xff1a; qt qml中下一个RowLayout如何对齐顶部到上方的ColumnLayout的底部略低一些间隔的位置&#xff1f; 我们怎么使用achors去锚定位置&#xff1f; 这些都是可以用anchors锚定属性&#xff0c;以及margin来设置的。 解决办法&#xff1a; 要实现将下一个R…...

Immutable.js 进行js的复制

介绍 在提供不可变&#xff08;Immutable&#xff09;数据结构的支持。不可变数据是指一旦创建后就不能被修改的数据&#xff0c;每次对数据进行更新都会返回一个新的数据对象&#xff0c;而原始数据保持不变。 使用 日常中我们使用的拷贝 (1) var arr { } ; arr2 arr ; …...

java动态生成excel并且需要合并单元格

java动态生成excel并且需要合并单元格 先上图看一下预期效果 集成poi <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.0.0</version> </dependency> <dependency><…...

JMeter启动时常见的错误

很多小伙伴在学工具这一块时&#xff0c;安装也是很吃力的一个问题&#xff0c;之前记得有说过怎么安装jmeter这个工具。那么你要启动jmeter的时候&#xff0c;一些粉丝就会碰到如下几个问题。 1.解压下载好的jmeter安装&#xff0c;Windows 平台&#xff0c;双击 jmeter/bin …...

python pandas 排序

Series的排序&#xff1a; Series.sort_values(ascendingTrue, inplaceFalse) 参数说明&#xff1a; ascending&#xff1a;默认为True升序排序&#xff0c;为False降序排序inplace&#xff1a;是否修改原始Series DataFrame的排序&#xff1a; DataFrame.sort_values(by, as…...

前后端分离式项目架构流程复盘之宿舍管理系统

文章目录 &#x1f412;个人主页&#x1f3c5;JavaEE系列专栏&#x1f4d6;前言&#xff1a;【&#x1f387;前端】先创建Vue-cli项目&#xff08;版本2.6.10&#xff0c;仅包含babel&#xff09;&#xff0c;请选择此项目并创建 【整理简化项目模板】【&#x1f380;创建路由】…...

Linux nohup 命令详解

nohup是Linux/Unix系统中非常有用的命令之一。它允许您在后台运行命令或脚本&#xff0c;并且在退出终端会话后仍然保持运行。这对于长时间运行的任务或进程非常有用&#xff0c;特别是当您需要离开终端但希望任务继续运行时。 nohup命令语法 nohup命令的基本语法如下&#x…...

VoxWeekly|The Sandbox 生态周报|20230731

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…...

音频文件放到网站空间里生成链接怎么做/打开全网搜索

如上图所示, A与B、A与C、B与D、C与E组件之间是父子关系&#xff1b; B与C之间是兄弟关系&#xff1b;A与D、A与E之间是隔代关系&#xff1b; D与E是堂兄关系&#xff08;非直系亲属&#xff09; 针对以上关系我们归类为&#xff1a; 父子组件之间通信 非父子组件之间通信(兄…...

ps做好切片后怎么做网站/网络怎么推广自己的产品

Redis是一个开源、基于C语言、基于内存亦可持久化的高性能NoSQL数据库&#xff0c;同时&#xff0c;它还提供了多种语言的API。近日&#xff0c;Redis 3.0在经过6个RC版本后&#xff0c;其正式版终于发布了。Redis 3.0的最重要特征是对Redis集群的支持&#xff0c;此外&#xf…...

网站建设前言/网络营销产品的首选产品

登录weblogic管控制台http://127.0.0.1:7001/console&#xff0c;Service->Jdbc->DataSources&#xff0c;点击lock&edit&#xff0c;建立数据源&#xff0c;并测试成功。测试weblogic92配置的jndi数据源的java代码package com.css.test;import java.sql.Connection;…...

网站怎么做百度排名/站长之家alexa排名

itoa将数字转换成指定进制的字符串itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数&#xff0c;所以不能在所有的编译器中使用。但是&#xff0c;大多数的编译器&#xff08;如Windows上的&#xff09;通常在<stdlib.h>头文件中包含这个函数。 char*itoa(…...

影院网站建设/海外营销方案

Hadoop分组统计计算案例 假如现在有一个用户流量使用情况的日志表&#xff0c;需要对用户的上行流量&#xff0c;下行流量和总流量进行统计&#xff1b;同时还要按照号码的前3位不同进行分别输出。 日志记录如下&#xff1a;&#xff08;【2】号码&#xff0c;【8】上行流量&…...

义乌做站外推广的公司/seo优化包括什么

目前我们使用的流程图制作软件大体有RFFLOW、FLOW CHARTING、VISIO三种&#xff0c;可是它们的体积和资源占用情况很大&#xff0c;操作复杂&#xff0c;有没有简单易用不需安装的流程图制作软件呢&#xff1f;下面我给大家推荐几款在线流程图制作工具。 第一款&#xff1a;Gli…...