首页 > 其他 > 详细

Kruskal重构树

时间:2019-11-06 09:04:56      阅读:71      评论:0      收藏:0      [点我收藏+]

构造方法

按照Kruskal的传统步骤,先排序,按顺序枚举两个非连通块,合并后, 建一个点权为两点之间边权的父节点 。这样建出来的一棵树称为Kruskal重构树。
e.g. 假设原图(盗的)长这样:
技术分享图片
建成树后就是这样(蓝色实线为最小生成树):
技术分享图片

用途

Kruskal重构树可以维护诸如“查询从某个点出发经过边权不超过w的边最远所能到达的节点”或“从某点到某点所有路径的最长(短)边的最小(大)值”(即最小(大)瓶颈路)之类的问题。
总之,算法处理范围有限,且多为同时包含“最大最小”、离线可二分的题目。
可与数据结构结合,以维护更复杂的数据结构。
支持在线,单次复杂度为\(O(\log n)\)

性质

按照上述方法建出来的树有一些非常好的性质。
1.树上除叶子结点以外的点都对应着原来生成树中的边,叶子结点就是原来生成树上的节点。
2.由于新点的创建顺序与原来生成树上边权的大小有关,可以发现,从每个点到根节点上除叶子结点外按顺序访问到的点的点权是单调的。
3.出于Kruskal算法贪心的性质,两个点u和v的LCA的点权就对应着它们最小生成树上的瓶颈。
4.实际上这棵树就是一个二叉堆。

例题

[简单]NOIp2013 货车运输
Solution:先bb一句,最大值最小叫最小瓶颈路,但这题是最小值最大,干脆叫最大瓶颈路吧(口胡中
那这题就是最大瓶颈路果题了。

[较难]NOI2018 归程

Kruskal重构树

原文:https://www.cnblogs.com/wzzyr24/p/11802816.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!