隐藏页面特效

Boruvka求最小生成树

1|0写在前面


这是我学这个算法的时候看的博客:推荐博客(除了这个还看了老师发的资料)

为了复习以及加深理解,来简单写一篇学习笔记(预计半小时写完)

2|0关于Boruvka


起因是在模拟赛遇到的T3。大意是:对于给出的完全图,w(u,v)=amax(u,v)amin(u,v),求最小生成树。
烧烤了半场比赛依然只拿了25分……
题解:用Boruvka算法简单解决。

当然这是一个最小生成树算法,那道题也是很显然的最小生成树题。

说到生成树,最先想到的就是Kruskal;然后是Prim(然而我Prim没怎么写过);至于Boruvka,大概是印象中只记得名字的存在。

简单来说,Boruvka像是前两者的结合体。它使用了Kruskal的贪心思想,同时也加入了Prim的向外扩展。

3|0实现思路


最初令每个点为一个连通块,每一轮,对于所有连通块,求它连向其他连通块的最短边;如果一个连通块的最短边连向另一连通块,则把最小边加入图中。

3|1伪代码


while 所有点未连通{ for 连通块 i minw[i] = 从i连向其他连通块的最短边 for 连通块 i if minw[i] 连接不同连通块{ ans += minw[i].w; merge(minw[i].u, minw[i].v); 连通块数量 -= 1; } }

3|2时间复杂度


假设求minw[i]的时间复杂度为T,那么总的时间复杂度就是O(Tlog2N)

解题

一般来说,运用Boruvka解题的关键就在于优化T

例如题中给出边权特殊的完全图
朴素的TN2;针对边权进行优化使得TNlog2N左右

3|3例题


经典模板-Xor-MST

顺便一提,做这道题的时候同学推荐了这个算法:01-trie合并 。也是学到了()

0609校内模拟赛T3-最小生成树

4|0写在后面


于是一个小时才写完。今天心态有点炸裂TT


__EOF__

本文作者Meteor2008
本文链接https://www.cnblogs.com/meteor2008/p/18248497.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   _kilo-meteor  阅读(18)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示