[C++][算法基础]连通块中点的数量(并查集)

给定一个包含 n 个点(编号为 1∼n)的无向图,初始时图中没有边。

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

  1. C a b,在点 a 和点 b 之间连一条边,a 和 b 可能相等;
  2. Q1 a b,询问点 a 和点 b 是否在同一个连通块中,a 和 b 可能相等;
  3. Q2 a,询问点 a 所在连通块中点的数量;
输入格式

第一行输入整数 n 和 m。

接下来 m 行,每行包含一个操作指令,指令为 C a bQ1 a b 或 Q2 a 中的一种。

输出格式

对于每个询问指令 Q1 a b,如果 a 和 b 在同一个连通块中,则输出 Yes,否则输出 No

对于每个询问指令 Q2 a,输出一个整数表示点 a 所在连通块中点的数量

每个结果占一行。

数据范围

1≤n,m≤10^{5}

输入样例:
5 5
C 1 2
Q1 1 2
Q2 1
C 2 5
Q2 5
输出样例:
Yes
2
3

代码:

#include<iostream>
using namespace std;const int N = 100010;
int front[N],num[N];int findleader(int x){if(front[x] != x){front[x] = findleader(front[x]);}return front[x];
}int main(){int n,m;cin>>n>>m;for(int i = 0;i<n;i++){front[i] = i;num[i] = 1;}string op;int a,b,c;int pa,pb,pc;while(m--){cin>>op;if(op == "C"){cin>>a>>b;pa = findleader(a);pb = findleader(b);if(pa == pb){continue;}else{num[pb] += num[pa];front[pa] = pb;}}else if(op == "Q1"){cin>>a>>b;pa = findleader(a);pb = findleader(b);if(pa == pb){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}}else if(op == "Q2"){cin>>c;pc = findleader(c);cout<<num[pc]<<endl;}}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601493.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CVE-2023-2928 DedeCMS 文件包含漏洞getshell 漏洞分析

DedeCMS&#xff08;也称为织梦CMS&#xff09;是一款基于PHPMySQL的开源内容管理系统。 在 DedeCMS 5.7.106 及之前的版本中发现一个漏洞。它已被宣布为关键。受此漏洞影响的是未知功能的文件uploads/dede/article_allowurl_edit.php。对参数 allurls 的操作会导致代码注入。…

【CHI】(十二)Memory Tagging

目录 1. Introduction 2. Message extensions 3. Tag coherency 4. Read transaction rules 4.1 TagOp values 4.2 Permitted initial MTE tag states 5. Write transactions 5.1 Permitted TagOp values 5.2 TagOp, TU, and tags relationship 6. Dataless transact…

【日常记录】【JS】getComputedStyle 获取DOM的最终样式值

文章目录 1、介绍2、getComputedStyle3、链接 1、介绍 Window.getComputedStyle()方法返回一个对象&#xff0c;该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有 CSS 属性的值。私有的 CSS 属性值可以通过对象提供的 API 或通过简单地使用 CSS 属性…

前端性能优化-Table渲染速度优化

教务系统-排课页面性能优化总结 一、前言 在公司教务系统中,排课页面慢的令人发指,在某些情况由于数据量大导致页面主进程卡死,遂组织进行一次排查优化,现记录一下 二、效果对比 以下数据均为UAT环境 Performence对比 更改前: 主进程渲染时间为 8s 教务系统-排课页面性…

【MySQL数据库 | 第二十三篇】什么是索引覆盖和索引下推

前言&#xff1a; 在数据库查询优化领域&#xff0c;索引一直被视为关键的工具&#xff0c;用于提高查询性能并加速数据检索过程。然而&#xff0c;随着数据库技术的不断发展&#xff0c;出现了一些新的优化技术&#xff0c;其中包括索引下推&#xff08;Index Pushdown&#…

《UE5_C++多人TPS完整教程》学习笔记31 ——《P32 角色移动(Character Movement)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P32 角色移动&#xff08;Character Movement&#xff09;》 的学习笔记&#xff0c;该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&#xff0c;UP主&#xff08;也是译者&…

机器学习笔记 - 深度学习遇到超大图像怎么办?使用 xT 对极大图像进行建模论文简读

作为计算机视觉研究人员,在处理大图像时,避免不了受到硬件的限制,毕竟大图像已经不再罕见,手机的相机和绕地球运行的卫星上的相机可以拍摄如此超大的照片,遇到超大图像的时候,我们当前最好的模型和硬件都会达到极限。 所以通常我们在处理大图像时会做出两个次优选择之一:…

苍穹外卖10(Spring Task定时任务,WebSocket双向通信,订单状态定时处理,来电提醒,客户催单)

目录 一、Spring Task 1. 介绍 2. 入门 1 使用步骤 2 使用示例 3. 详解 1 Scheduled注解 2 cron表达式 1 cron表达式6个域 2 各个域的取值说明 4. 小结 二、订单状态定时处理 1. 需求分析 1 问题分析 2 功能需求 2. 代码开发 1 修改引导类加EnableScheduling …

Azure的VFP和虚拟IP地址

Azure 的Virtual filtering platform (VFP) 是Azure 网络地址转换,端口转换和端口分配的基础。 下面我们来深入介绍一下VFP的工作方式。 VFP的出站动作。 对于客户端地址作为虚拟IP的出站目的地址的时候,VFP 驱动会负责做以下两个动作。 源地址转换。端口地址转换。VFP 和 S…

转让山东不良资产处置公司变更时间和变更要求

您好&#xff0c;我们有家山东的不良资产处置公司转让&#xff0c;大家都知道不良资产处置公司现在全国都是注册不了的&#xff0c;只有收购现成的&#xff0c;所以有需要经营的可以联系我&#xff0c;我们有家现成无经营的不良资产处置公司转让&#xff0c;包变更法人股东&…

提升自媒体写作效率:7款必备工具推荐! #知识分享#媒体#AI写作

我们做自媒体运营&#xff0c;想要快速的创作内容&#xff0c;提供文章的创作速度是我们的目标&#xff0c;我们别的大佬可以很快地就创作出一篇内容&#xff0c;而自己墨迹半天确出不了一个字呢&#xff1f;其实这关乎到创作技巧&#xff0c;下面小编就跟大家分享如何利用自媒…

电网的正序参数和等值电路(二)

本篇为本科课程《电力系统稳态分析》的笔记。 本篇这一章的第二篇笔记。上一篇传送门&#xff0c;下一篇传送门。 三相线路的正序电纳 线路的电导 线路的电导反映的是导线上施加电压后的电晕现象和绝缘子中产生的泄露电流的参数。一般情况线路绝缘良好&#xff0c;泄露电流…