并查集学习(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.hqwc.cn/news/596134.html

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

相关文章

Pytorch转onnx

pytorch 转 onnx 模型需要函数 torch.onnx.export。 def export(model: Union[torch.nn.Module, torch.jit.ScriptModule, torch.jit.ScriptFunction],args: Union[Tuple[Any, ...], torch.Tensor],f: Union[str, io.BytesIO],export_params: bool True,verbose: bool False…

【QT+QGIS跨平台编译】056:【pdal_json_schema+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、pdal_json_schema介绍二、pdal下载三、文件分析四、pro文件五、编译实践一、pdal_json_schema介绍 pdal_json_schema 是与 PDAL(Point Data Abstraction Library)相关的 JSON 模式文件。PDAL 是一个用于处理和分析点云数据的开源库。JSON 模式…

DHCP-PXE

Dynamic Host Configuration Protocol 动态主机配置协议 1.Selinux 调试为Permission 防火墙配置 搭建DHCP的主机必须有一个静态地址&#xff0c;提前配置好 安装DHCP软件 服务名为dhcpd DHCP地址分配四次会话&#xff0c; DISCOVERY发现 OFFER 提供 REQUEST 回应 A…

5G网络架构及技术(二):OFDM一

ToDo: 等把这些讲义看完后得单开一个文章整理思维导图   该部分由于内容比较重要&#xff0c;OFDM是5G物理层的基础&#xff0c;但学习时直接跳到5G OFDM去看它的那些参数设置感觉没什么意义&#xff0c;还得从发展的角度进行学习&#xff0c;先从最先用到OFDM的WiFi协议开始…

WCH恒沁单片机-CH32V307学习记录2----FreeRTOS移植

RISC-V 单片机 FreeRTOS 移植 前面用了 5 篇博客详细介绍了 FreeRTOS 在 ARM Cortex-M3 MCU 上是如何运行的。 FreeRTOS从代码层面进行原理分析系列 现在我直接用之前的 RISC-V MCU 开发板子&#xff08;CH32V307VCT6&#xff09;再次对 FreeRTOS 进行移植&#xff0c;其实也…

【C语言自定义类型之----结构体,联合体和枚举】

一.结构体 1.结构体类型的声明 srruct tag {nemer-list;//成员列表 }varible-list;//变量列表结构体在声明的时候&#xff0c;可以不完全声明。 例如&#xff1a;描述一个学生 struct stu {char name[20];//名字int age;//年龄char sex[20];//性别 };//分号不能省略2.结构体…

C语言实现快速排序算法

1. 什么是快速排序算法 快速排序的核心思想是通过分治法&#xff08;Divide and Conquer&#xff09;来实现排序。 算法的基本步骤是: 1. 选择一个基准值&#xff08;通常是数组中的某个元素&#xff09;&#xff0c;将数组分成两部分&#xff0c;使得左边的部分所有元素都小于…

Open CASCADE学习|在给定的TopoDS_Shape中查找与特定顶点 V 对应的TopoDS_Edge编号

enum TopAbs_ShapeEnum{TopAbs_COMPOUND,TopAbs_COMPSOLID,TopAbs_SOLID,TopAbs_SHELL,TopAbs_FACE,TopAbs_WIRE,TopAbs_EDGE,TopAbs_VERTEX,TopAbs_SHAPE}; 这段代码定义了一个名为 TopAbs_ShapeEnum 的枚举类型&#xff0c;它包含了表示不同几何形状类型的常量。这些常量通常…

刷题之Leetcode283题(超级详细)

283.移动零 283. 移动零https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nu…

【了解下Oracle】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

golang 选择排序

学习笔记&#xff5e; // Author sunwenbo // 2024/4/6 21:49 package mainimport "fmt"/* 选择排序基本介绍选择式排序也属于内部排序法&#xff0c;是从预排序的数据中按指定的规则选出某一元素&#xff0c;经过和其他元素重整&#xff0c;再依原则交换位置后达到…

快速了解FastAPI与Uvicorn是什么?

概念 什么是Uvicorn Python Uvicorn 是一个快速的 ASGI&#xff08;Asynchronous Server Gateway Interface&#xff09;服务器&#xff0c;用于构建异步 Web 服务。它基于 asyncio 库&#xff0c;支持高性能的异步请求处理&#xff0c;适用于各种类型的 Web 应用程序。 Uvi…