森林与并查集

【集合与森林】并查集 阅读详情
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>

//路径压缩

#define swap(a, b) { \
	__typeof(a) __temp = a;\
	a = b, b = __temp;\
}

typedef struct UnionSet {
	int *father;//, *size;
	int n;
} UnionSet;

UnionSet *init(int n) {
	UnionSet *u = (UnionSet *)malloc(sizeof(UnionSet));
	u->father = (int *)malloc(sizeof(int) * (n + 1));
//	u->size = (int *)malloc(sizeof(int) * (n + 1));
	u->n = n;
	for (int i = 1; i <= n; i++) {
		u->father[i] = i;
	//	u->size[i] = 1;
	}
	return u;
}

int find(UnionSet *u, int x) {
	return u->father[x] = u->father[x] == x ? x : find(u, u->father[x]);
}

int merge(UnionSet *u, int a, int b) {
	int fa = find(u, a), fb = find(u, b);
	if (fa == fb) return 0;
	//if (u->size[fa] < u->size[fb]) swap(fa, fb);
	u->father[fb] = fa;
	//u->size[fa] = u->size[b];

	return 1;
}

void clear(UnionSet *u) {
	if (!u) return ;
	free(u->father);
//	free(u->size);
	free(u);
	return ;
}

int main() {
	int n, m;
	scanf("%d%d", &n, &m);
	UnionSet *u = init(n);
	for (int i = 0; i < m; i++) {
		int a, b, c;
		scanf("%d%d%d", &a, &b, &c);
		switch (a) {
			case 1: merge(u, b, c); break;
			case 2: printf("%s\n", find(u, b) == find(u, c) ? "YES" : "NO");
			default: break;
		}
	}
	clear(u);
	return 0;
}

Django框架中settings文件的部署建议 为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。然后,通过在启动应用程序时指定不同的settings文件,来加载相应的配置。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。在Django框架中,settings.py文件是非常重要的配置文件,它包含了项目的各种设置和选项。可以使用Python的。为了更好地管理开发和生产环境的配置,建议将settings文件分为多个文件,分别用于不同的环境。 阅读详情

相关推荐

用FPGA在HDMI上显示自定义字符:从COE文件到OSD叠加的保姆级教程

本文详细介绍了如何在FPGA上实现HDMI视频流的OSD字符叠加技术,从COE文件生成到动态区域控制的完整流程。通过Verilog代码示例和实战技巧,帮助开发者掌握字符ROM设计、像素坐标追踪和动态混合等核心技术,适用于视频监控、系统状态显示等应用场景。

weixin_28720767的博客 231

【数据结构】数据结构高手进阶:并查集VS森林,谁才是集合操作的真神?

【数据结构】第五章——树与二叉树——并查集 详细介绍并查集的相关内容……

蒙奇D索大的博客 846

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 527

7.森林与并查集

由若干棵互不相交的树组成的数据结构被称为森林。在数据结构里,森林是由若干棵互补相交的树组成的。 森林有两种遍历方法,分别是先序遍历和后序遍历。

nodd_le的博客 1059

【鸿蒙实战开发】HarmonyOS申请调试签名证书过程

这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。

HarmonyOS_002的博客 3559

基于CNN的表情识别(FER)pytorch实现

Report for FER Jian Tang Abstract 我们使用卷积神经网络(CNN)实现了baby的面部表情识别(FER)。 数据上,我们获取了开源FER数据集FER2013[1],besides我们使用爬虫获取了baby相关的人脸图片,进行了手工分类标注以形成一个全新的baby FER数据集。 模型上,我们首先复现了Luan[2]的工作,即参考Kuo[3]在CVPR 2018上的工作并实现一个轻量的CNN网络,在FER2013上进行训练并得到了XXXX%的平均分类准确率(avg a

qq_20241587的博客 3683

【数据结构】4.6树、森林和并查集

一棵树Tree是由一个或一个以上结点组成的有限集,其中有一个特定的结点Root称为Tree的根结点。集合(Tree-{Root})中的其余结点可被划分为个不相交的子集、...、,其中每个子集都是树,并且其相应的根结点、...、是 Root 的子结点,子集)称为树Tree的子树(subtree),子结点) 称为结点Root的出度。

serendipity_lz的博客 2022

ESP32-S3驱动OV3660摄像头原理图设计,已量产

本文重点拆四条主线:多来源输入电源如何收敛到 3V3,摄像头三路供电如何拆分,ESP32-S3 如何接住 DVP 数据流与外部存储,以及音频/补光/传感外围怎样挂到主控边上。至于最终图像帧率、算法策略和软件时序,当前原理图未体现。

不脱发的程序猿 978

[XJTUSE]数据结构学习——第三章 树与二叉树 3.6 树、森林和并查集[图文详解]

3.6 树、森林和并查集[图文详解]

weixin_47692652的博客 1563

【Windows Server 2019】发布服务器 | 远程桌面服务的安装与配置 Ⅰ——理论,实验拓扑和安装基于RemoteAPP的RDS

博客介绍了Windows Server中远程桌面服务的理论,实验拓扑以及基于RemoteAPP的RDS安装。博文介绍了如何在Windows Server上部署发布服务器。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6128

【雕爷学编程】Arduino FOC 之 AS5600 磁编码器的模拟电压与IIC通信

在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。案例三在使用I2C通信读取角度值的基础上,添加了设置角度范围的功能。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1497

数据结构:森林与并查集

用于解决连通性问题,并查集是不二法门!

2301_81454749的博客 1539

ROS机器人里程计模型

3.5 移动机器人系统模型 相信大家的机器人平台STM32端底层控制和机器人urdf建模都已经顺利完成了,在正式开始ros端编写机器人启动功能包之前,我们还不得不学习一些必要的理论知识。别担心数学不好,这里基本都是高中数学。下面我们开始,Are you ready? 没准备好也开始了。 3.5.1 常用坐标系系统模型 在移动机器人技术研究中,最为常用的坐标系统是笛卡尔坐标系统。而在SLAM算法研究中,有如下几个比较常见的笛卡尔坐标系统,它们分别为机器人坐标系XR YR OR 、传感器坐标系XS YS OS

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

20131029: 并查集; 树与森林入门

今天开始学习树与森林(虽说老师早就开始讲了), 森林就是多棵树的集合,当然,可以为空。 而树也就是在二叉树的基础上允许多分叉, 必须要掌握的是树与森林的转换, 二叉树与森林的转换, 树的性质(基本上可以由二叉树的性质类推而来), 我们熟悉的是二叉树, 所以要多用二叉树来类比探讨树与森林的性质~ 森林无疑是很有用的, 就是用起来可能比较麻烦, 其本质是集合, 集合的元素又是集合, 也就是说, 说

u010644404的专栏 1958

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

树与森林之并查集

并查集通常用树的双亲节点方式作为并查集的存储结构,每个子集合表示一棵树,同样的所有的子集合构成了森林。这里说个规定 根节点用-1 或者一个小于0的数来表示以区分根节点、父节点和叶子节点,初始化时将数组所有元素都设置为-1。数组具有随机访问的特点故这里使用一个一维数组实现(为了方便快速模拟这里使用int 类型 后续会改成DataType类型)(请牢牢记住-n表示当前这棵树有n个节点 最多有n-1个孩子,就算一棵树的节点数时候记得使用绝对值)并查集可以看成是一个无序列表(集合)下面是合并操作及代码运行。

hbbbx的博客 158

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据结构简记✏️ | 树与森林&并查集

树与森林&并查集树与森林一、树与森林的定义二、树的存储结构1. 双亲表示法2. 双亲孩子表示法3. 孩子兄弟表示法并查集 树与森林 一、树与森林的定义 二、树的存储结构 1. 双亲表示法 类型定义: typedef struct PTNode { TElemType data;//元素值 int parent;//双亲位置,根结点的双亲位置parent为-1 }PTNode; typedef struct { PTNode *nodes;//由初始化分配的结点数组 int r,nodeN

CV工程师的博客 394

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

数据结构 - 森林与并查集

文章目录使用场景C 实现C++ 实现 使用场景 并查集常用于操作不相交集合,判断或操作相关联关系,类似将森林中的两棵树进行合并 C 实现 quick_find 算法,将同属于一区块的集合进行 “染色” 判断 #include <stdio.h> #include <stdlib.h> typedef struct UnionSet { int *color; int n; } UnionSet; UnionSet *init(int n) { UnionSet *u = (

haoke_cn的博客 174

并查集及其链表与不相交集合森林实现

在需要判断两个对象是否属于同一集合的应用时,并查集是一种非常有效的数据结构。并查集具有MAKE-SET,FIND-SET,UNION三个基本操作。定义一个具有m个MAKE-SET,FIND-SET,UNION(其中n个MAKE-SET操作)的操作序列。这个操作序列中UNION的操作次数不多于n-1(因为每次UNION都会使集合数减少1)。       采用链表是实现并查集的一种非常便捷的方式。每

zhanglei8893的专栏 2974

数据结构——森林与并查集

union(5, 0):5所在的树是比较大的树,而0 是小树,所以 0 指向 5 的根 6。union(7, 3): 7 的根为1, 3 的根为 8,所以 1 的父亲是 8。union(6,1):6 的根为0, 1 的根为1, 所以 0 是 1 的孩子。union(7, 2):2 的根为 1, 所以 7 的父亲是 1。union(9, 4):4 的根为 8,所以 9 的父亲为 8。union(9, 4):9 是比较小的树,4是比较大的树。union(5, 0):5 的父亲是 0。

qq_68915288的博客 158

十、森林与并查集---(1)什么是并查集

摘自计蒜客:http://www.jisuanke.com/course/35/7052 在计算机科学中,并查集(Merge-Find Set),也被称为不相交集合(Disjoint Set),是用于解决若干的不相交集合的如下几种操作的统称: MAKE-SET(x):即初始化操作,建立一个只包含元素 x 的集合。 UNION(x, y):即合并操作,将包含 x 和 y 的集合合并为一个新

firetreeSF的博客 1589

算法与数据结构-并查集(并查集森林)(按秩合并)(路径压缩)(C++)

描述 并查集是一种用于处理一些不相交集合的合并和查询问题的树型数据结构。通常在使用中以森林来表示。用森林的好处是降低了在合并(Union)操作时的时间复杂度。本文以并查集森林实现为例,学习该数据结构。 思路 用顺序表的形式来存储每个结点,每个结点的内容为该结点的直接父结点。例如,parent[i]表示第i个节点的父结点的索引。 为了使并(Union)操作时尽可能保持较低的树高度,新增一个size...

weixin_43587255的博客 475

数据结构 | 6.森林与并查集

并查集能解决连通性问题,如 A=B,B=C,C=DA = B,B=C,C=DA=B,B=C,C=D 能推导出 A=DA=DA=D。 Union−Find 1. 连通性问题 基于 染色 的思想,一开始所有点的颜色不同 连接两个点的操作,可以看成将 一种颜色 的点染成 另一种颜色 如果两个点颜色 一样,证明连通,否则不连通 这种方法叫做并查集的【Quick-Find算法】 2. Quick-find 2.1 讲解 视频讲解 开辟一个数组,保存 0~9 的值,一开始颜色都不同,即将该数组里的每个位置的数

明朗晨光的专栏 579

十、森林与并查集---(0)什么是森林

内容摘自计蒜客:http://www.jisuanke.com/course/35/7051 我们都知道植物界里的森林,是由许多棵树组成的,就像下面这张图: 在数据结构里,森林是由若干棵互不相交的树组成的。下图就是一个由两棵树组成的森林。两棵树之间分别独立,没有交集。 森林有两种遍历方法,分别是先序遍历和后序遍历。请注意,森林是没有和树的中序遍历对应的

firetreeSF的博客 1389
上一篇: 优先队列
下一篇: 循环队列及扩容
霍传飞
博客等级 码龄11年 15粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值