![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
文章平均质量分 62
zzuli_xiaomingke
限于不粘锅
展开
-
并查集与向量
一些真理所以并查集到底是啥,是一个树?是一个连通分量?其实我们可以认为这是一个向量。为什呢?我们来看这个图。假设存在关系A-B、B-C,根据这两个关系去构建并查集得到的结论不就是A-C有关系吗?实际上就是两个向量做加法,并查集的路径压缩就是在做这件事,向量路径缩短了,查询的速度自然而然就快起来了。而之前纠结的连通性问题其实就是向量存不存在的问题,换个角度来看,别有一番风味。结合一下实际,看一下一个经典案例。http://poj.org/problem?id=1182食物链问题,大意是某处存在三类生原创 2022-04-30 08:29:16 · 176 阅读 · 0 评论 -
路径压缩和按秩合并
更快更高更强路径压缩细心的同学可以已经注意到了,上一章节的最后一个题目的代码出现了路径压缩这个东西,这里就来说说怎么让并查集更加健壮。首先来说,原先的查找过程中可以看到是一个循环向前查询的过程,但是如果情况比较糟糕,最终的结构搞成了一字长蛇阵,那么查询效果就会不尽如人意,所以有无办法优化呢,其实可以在查询到最终结果时将路径上的所有节点的直接上级改成查询出的最终上级,并查集构造过程中不断优化现有结构,就会得到一个比较优秀的查询结果,从数据结构的角度来看—维护的树深度缩短了。这就是路径压缩。//查找祖先原创 2022-04-30 08:26:53 · 359 阅读 · 0 评论 -
并查集应用
Code的秘诀这里再想一件事,并查集到底能用在何处?什么时候我们会用到?其实就是三个字,连通性,如果涉及到了连通性,可能就会用到并查集,当然也有一些问题比较隐晦,我们后来在说。举一个例子。连通性问题http://poj.org/problem?id=2236这个是POJ的一个题目,大意就是给定了一系列计算机的位置,但是此处的计算机都是坏掉的计算机,不能正常工作。后续有输入O x代表修理第x个机器,使其具有联网功能但是两台计算机之间的距离不能超过距离D,后续有输入S x y 代表检查x和y两台机器是原创 2022-04-30 08:25:04 · 152 阅读 · 0 评论 -
并查集漫谈
武林风云录在王者大陆上,存在着很多派系,大家各自有各自的领袖。不同门派的帅小伙没什么正经工作,在峡谷里面溜达,见面以后往往会在物理上打成一片,但是由于派系里面都是体面人,大家不会打朋友的朋友,而且大家都只知道自己的直接上级。比如木兰和凯的关系比较好,拉拢一伙人自成了一派,号称长城守卫军,有一天盾山看到了凯,由于互相不熟,两个就想比划比划,但是打之前,他们会先确定一下各自是否在一个派系,盾山问了一下上级守约,守约说自己的上级是花木兰且木兰没有上级了,盾山报出自己的最终上级是木兰,凯也报出来自己的上级是木兰。原创 2022-04-30 08:23:15 · 161 阅读 · 0 评论