并查集学习(836. 合并集合 + 837. 连通块中点的数量)

//得先加集合个数再合并!!!!!!!!! 

核心代码:

int find(int x){//返回父节点if(x != p[x]) {p[x] = find(p[x]);//路径压缩 } //孩子不等于爸爸,就找爸爸的爸爸 return p[x];
}

题目链接:836 合并集合

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;int n,m;
int p[100010];void init(){for(int i=1;i<=100010;i++){p[i] = i;}
} 
int find(int x){//返回父节点if(x != p[x]) {p[x] = find(p[x]);//路径压缩 } //孩子不等于爸爸,就找爸爸的爸爸 return p[x];
}int main()
{init();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);//	int f1 = find(a);//	int f2 = find(b);//	printf("ffff%d %d\n",f1,f2);//	if(f1 == f2) continue;//	else{//		p[f1] = f2;//	} }else{if(find(a) == find(b))printf("Yes\n");else{printf("No\n");}}}return 0;
}

题目链接:837. 连通块中点的数量

#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<cmath>using namespace std;int n,m;
int p[100010];
int size1[100010];//连通块里的个数,只保证根节点的size有意义 int find(int x){//返回父节点if(x != p[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;size1[i] = 1;}getchar();while(m--){char op[5];int a,b;scanf("%s",&op);if(op[0] == 'C'){scanf("%d%d",&a,&b); if(find(a) == find(b)) continue;//得先加集合个数再合并!!!!!!!!! size1[find(b)] += size1[find(a)];p[find(a)] = find(b);}else if(op[1] == '1'){scanf("%d%d",&a,&b); if(find(a) == find(b))printf("Yes\n");else{printf("No\n");}			}else{//求连通块的数量,先找父节点scanf("%d",&a);printf("%d\n",size1[find(a)]);				 }}return 0;
}

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

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

相关文章

编程小白必须知道的 15 个强大的 Python 单行代码

这里写目录标题 三元运算符为多个变量赋值交换变量的值交换列表中的元素替换列表中的元素列表推导式与三元运算结合使用列表推导式从列表创建子列表更改列表元素类型使用列表推导式输出文件列表平展多维列表字典推导式集合推导式将文件读入生成器使用 Python -c 命令的单行代码…

2024.3.25力扣每日一题——零钱兑换2

2024.3.25 题目来源我的题解方法一 动态规划 题目来源 力扣每日一题&#xff1b;题序&#xff1a;518 我的题解 方法一 动态规划 给定总金额 amount 和数组 coins&#xff0c;要求计算金额之和等于 amount 的硬币组合数。其中&#xff0c;coins的每个元素可以选取多次&#…

先进电气技术 —— “控制”与“估计”

一、背景 在当今科技日新月异的时代&#xff0c;先进电气技术正在全球范围内以前所未有的速度发展&#xff0c;尤其是在“控制”与“估计”两大核心技术领域的突破&#xff0c;对电力系统、工业自动化、智能电网、电动汽车等诸多领域产生了深远影响。本文将探讨这两项核心技术…

基于微信小程序的生活日用品交易平台 的设计与实现

一、项目背景介绍&#xff1a; 随着计算机互联网技术的不断进步&#xff0c;也推动了计算机技术的进步&#xff0c;推动了社会的智能化&#xff0c;使科技与人们的日常需求紧密的联系到了一起&#xff0c;诞生人们追求更加便利的生活模式。计算机技术是社会前进的主力军&#x…

whatsapp 语音通话 音频编码(三)

通过RTP 将语音数据发给对方之前需要将语音数据进行编码&#xff0c;whatsapp 采用opus编码。Opus编码是由silk编码和celt编码合并在一起&#xff0c;silk编码是由skype公司开源的一种语音编码&#xff0c;特别适合人声&#xff0c;适合于Voip语音通信。celt和mp3,aac类似&…

面试题——JVM老年代空间担保机制(我的想法)

这里借用一下人家的图&#xff0c;来说一下我的想法&#xff0c;嘻嘻。。。。 原文链接&#xff1a;一道面试题&#xff1a;JVM老年代空间担保机制-CSDN博客? 嗯&#xff0c;我觉得老年代担保机制的主要作用就是避免频繁触发FULL GC&#xff0c;这其实也是因为年轻代Minor GC…

前端:注册页面(后端php实现)

效果 代码 Regist.php <!-- 内部员工注册 --> <?php require_once get_db_conn.php; $conn db_connect();?> <?php //设置变量的默认值 if (!isset($_POST[UserID])) {$_POST[UserID] ; } if (!isset($_POST[Password])) {$_POST[Password] ; } if (!i…

ARXML处理 - C#的解析代码(一)

目的 本文介绍通过AUTOSAR组织提供的xsd文件&#xff0c;自动生成对应的C#解析代码的框架。 自动生成方法&#xff1a;Microsoft SDKs\Windows\v7.0A\bin\xsd.exe 命令&#xff1a;xsd.exe AUTOSAR_4-0-3.xsd /c /l:CS /n:AUTOSAR4 AUTOSAR_4-0-3.xsd 是需要生成代码的xsd文…

实战:Solaris系统下Oracle 12.2 在线扩容ASM磁盘组操作记录

这篇文章主要是为了记录一下操作&#xff0c;这个假期又要给这套RAC扩容磁盘。 我这套Solaris的小机我还不总操作这玩意&#xff0c;和LINUX有点小差别&#xff0c;整理记录一下&#xff0c;要不每次都是现翻。 存储端划LUN映射到主机 登录到3PAR存储控制台&#xff0c;创建…

数据生成 | Matlab实现基于DE差分进化算法的数据生成

数据生成 | Matlab实现基于DE差分进化算法的数据生成 目录 数据生成 | Matlab实现基于DE差分进化算法的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于DE差分进化算法的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; 2.计…

SSL/TLS:网络安全中的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

C语言如何将多维数组名作为函数参数?

一、问题 ⼦函数执⾏时&#xff0c;整个多维数组是由主函数决定的&#xff0c;这时就要把多维数组的数组名作为函数参数传递给⼦函数。那么在C程序中&#xff0c;怎样将多维数组名作函数参数进⾏传递&#xff1f; 二、解答 以⼆维数组为例&#xff0c;其格式如下。 形参定义&…

Vue3_2024_8天【vue2中的标签ref和vue3中的标签ref的区别】

第一&#xff1a;Vue 2 中的 ref 在 Vue 2 中&#xff0c;ref 主要用于在模板中注册引用信息。它可以用在html标签上或&#xff08;子&#xff09;组件上。一旦标签元素或组件被渲染&#xff0c;你就可以通过 this.$refs 来访问它。 <template> <div ref"myDiv&…

HUD抬头显示器阳光倒灌实验一般步骤

概述 汽车HUD&#xff08;Head-Up Display&#xff0c;即抬头显示器&#xff09;阳光倒灌实验是一种用于评估汽车抬头显示器在阳光直射条件下显示效果的测试。该实验的目的是确保HUD系统在强烈的阳光下依然能够清晰地显示信息&#xff0c;不影响驾驶员的视线和驾驶安全。 一般…

FJSP:小龙虾优化算法(Crayfsh optimization algorithm,COA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

Python-VBA编程500例-033(入门级)

角色定位(Role Positioning)在编程中的实际应用场景主要体现在以下几个方面&#xff1a; 1、权限管理&#xff1a;在开发企业级应用或复杂的系统时&#xff0c;角色定位用于定义和管理用户的权限。例如&#xff0c;一个系统可能有管理员、普通用户、访客等不同角色&#xff0c…

LCD屏幕mmap显示

目录 前言 一.LCD显示 二.LCD颜色显示 2.1 直接显示 2.2 mmap映射显示 前言 mmap是一种内存映射文件的方法&#xff0c;它允许将文件或其它对象映射到进程的地址空间。 使用mmap映射函数进行映射显示&#xff0c;与屏幕普通直接显示相比有很大的优势 一.LCD显示基础 像素、分辨…

二叉树进阶——手撕二叉搜索树

troop主页&#xff1a;troop 手撕二叉搜索树 1.二叉搜索树的定义2.实现&#xff08;非递归&#xff09;补充结构2.1查找2.2插入2.3删除&#xff08;重要&#xff09;情况1(无孩子&&一个孩子&#xff09; 3.二叉搜索树的应用3.1K模型3.2KV模型3.2.1KV模型的实现 总结二叉…

Github 2024-04-05Java开源项目日报Top9

根据Github Trendings的统计,今日(2024-04-05统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9TypeScript项目1OpenAPI 生成器:基于规范自动生成API工具 创建周期:2155 天开发语言:Java协议类型:Apache License 2.0Star数量:1…

linux操作系统安装及命令初识,上岸蚂蚁金服

310 包&#xff09; desktop 1800个包左右 内容必须大于 768M 系统设置 分区设置 挂载点 /boot / swap 交换分区–占用磁盘容量 网络配置 网卡配置 设置为ON 主机名配置 Begin installation 设置 root 用户密码 命令初识 命令 选项 参数&#xff1a; 命令选项参数…