![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
李今朝
这个作者很懒,什么都没留下…
展开
-
并查集路径优化
并查集路径优化我们想要查找4的掌门时,发现他很深,我们可以在查找过程中降低他的深度。第一种方法将每一个节点的父节点,置换为爷爷节点,这样可以减少数的高度。f[x]=f[f[x]]结果如下图所示代码:int query(int x){ if(x!=f[x]){ f[x]=f[f[x]]; query(f[x]) } return x;}虽然数的高度降低了,但是,并没有达到最优。这样的一棵树才是最优的实现:int query(int x){ if(x!=f[x]){原创 2020-11-28 17:03:32 · 188 阅读 · 0 评论 -
并查集+路径压缩(POJ 2524)
并查集+路径压缩(POJ 2524)题目链接: http://poj.org/problem?id=2524.并查集x与y是同一门派的,y与z是同一门派的,那么x与z也是同一门派的。给出N个人(1~n),m对关系(并不是所以人都)。并查集可以构建出n个点中有几个连通图,判断任意两个点是否在们一个连通图中。fa[i]=s;i=s 表示i是一个根节点(可以理解为一个门派的掌门)i!=s 表示i的上一级是s,s不一定是掌门。初始化:将自己的上层节点(即父节点)设置为自己)查找x的掌门:判断x的原创 2020-11-28 16:47:41 · 175 阅读 · 0 评论