更改
跳到导航
跳到搜索
←上一编辑
下一编辑→
Union find
(查看源代码)
2021年10月10日 (日) 18:39的版本
添加366字节
、
2021年10月10日 (日) 18:39
无编辑摘要
第1行:
第1行:
[[Category:刷题]]
[[Category:刷题]]
并查集:用于处理一些不交集(Disjoint sets)的合并及查询问题。
并查集:用于处理一些不交集(Disjoint sets)的合并及查询问题。
+
+
在求最小生成树的 [[wikipedia:Kruskal's_algorithm|Kruskal 算法]] 中就用到了并查集。
== 算法 ==
== 算法 ==
第13行:
第15行:
<syntaxhighlight lang=python>
<syntaxhighlight lang=python>
−
def
find_representative
(x):
+
def
find_repr
(x):
if x.parent == x:
if x.parent == x:
return x
return x
第23行:
第25行:
=== 合并 ===
=== 合并 ===
−
{{TODO|union}}
+
如果两个节点的代表不同,则将它们的代表相连。注意最后一行中是对两节点的代表(ri 和 rj)进行操作,而不是 i 和 j。
+
<syntaxhighlight lang=python>
+
ri = find_repr(i)
+
rj = find_repr(j)
+
if ri != rj:
+
representative[ri] = rj
+
</syntaxhighlight>
== 相关题目 ==
== 相关题目 ==
Weirane
行政员
、
管理员
528
个编辑
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
特殊页面
可打印版本