当前位置: 首页 > news >正文

最小树形图

给定一个有权有向图 \(G=\langle V,A\rangle,w:A\mapsto\mathbb{R}\) 和一个根 \(r\in G\),求以 \(r\) 为根的最小生成树,满足每条边都是父亲指向儿子(外向树)。

暴力做法

不失一般性,我们可以简单的 \(O(|V|+|A|)\) \(\text{dfs}\) 判断这样的树是否存在,并且对于平行弧,我们可以只保留较小的那条。

然后我们约定 \(E\subseteq A,w(E)=\sum\limits_{e\in E}w(e)\)

\(\pi(v)\) 表示所有指向 \(v\) 的弧 \(e=(u,v)\)\(w(e)\) 最小的 \(u\)。考虑 \(M=\langle V,\{(\pi(v),v):\forall v\in V\setminus\{r\}\}\rangle\),如果 \(M\) 中无环,那么 \(M\) 就是所求。

\(M\) 中有环,我们考虑递归地缩点:

任选一个环 \(C\in M\)。新建节点 \(v_C\),建立新图 \(G^\prime=\langle V^\prime,A^\prime\rangle,w^\prime:A^\prime\mapsto\mathbb{R}\),其中 \(V^\prime=(V\setminus C)\cup\{v_C\}\)

\(A^\prime\) 满足,\(\forall e=(u,v)\in A\land e\not\in C\)

  1. \(u,v\not\in C\)\(e=(u,v)\in A^\prime,w^\prime(e)=w(e)\)
  2. \(u\in C,v\not\in C\)\(e^\prime=(v_C,v)\in A^\prime,p=(\pi(u),u),w^\prime(e^\prime)=w(e)-w(p)\)
  3. \(u\not\in C,v\in C\)\(e=(u,v)\in A^\prime,w^\prime(e)=w(e)\)

\(f(G,r)\) 表示图 \(G\) 中以 \(r\) 为根的最小树形图大小,有 \(f(G,r)=f(G^\prime,r)+w(C)\)

没有环的情况,正确性是显然的。

有环的时候,我们其实应该选择一条进入环的边,但是我们不知道具体选择哪一条,但是因为是有向边,所以从 \((u,v)\) 进入环之后,\((\pi(v),v)\) 这条边就没必要选了。不难发现我们恰好需要一条边来打破一个环,于是就按照上述方法得到 \(w^\prime\) 即可保证贪心的正确性。

按照刚刚讲的思路暴力,每轮建立 \(M\) 的代价是 \(O(|V|+|A|)\),找环的代价也是 \(O(|V|+|A|)\),然后每次缩点至少减少 \(1\) 个点,至多执行 \(O(|V|)\) 轮。于是整体复杂度就是 \(O(|V|^2+|V||A|)\),注意到不连通可以 \(O(|V|+|A|)\) 判定,于是可以写成 \(O(|V||A|)\)(忽略没有弧的情况)。

我们发现每轮全部重新计算太浪费了,只需要修改环上的点。于是我们用可并堆维护每个点的入边(如果要做到理论最优,需要 \(\text{fib}\) 堆),再用并查集维护缩点的关系,这样就可以做到 \(O(|A|+|V|\log|V|)\) 了。

代码?鸽子能更新就不错了。

http://www.zskr.cn/news/32016.html

相关文章:

  • 网络安全资源大全:助你紧跟前沿威胁与防御技术
  • Win11 使用 Copy v86 在线网页运行 VC6 学习 C 语言的可行性
  • 现代c++编程体验2
  • Excel高性能异步导出完整方案!
  • 「LG3600-随机数生成器」题解
  • 计算机毕业设计springboot音乐畅听系统 基于Spring Boot框架的智能音乐播放系统编写 Spring Boot驱动的音乐在线欣赏平台构建
  • 2025年土地报批技术服务品牌
  • 2025年土地报批技术服务品牌Top10排行榜
  • 2025 圆木/方木/原木多片锯设备推荐榜:河北普悦机械源头厂家凭核心技术登顶,4家优质企业各展优势
  • 2025年多功能综合杆厂家排名前十推荐
  • 常用Web 实时通信技术:原理+选型,一篇通关
  • 第二十四篇
  • 2025年西安楼房地产排名、口碑推荐榜单、公司推荐排行、开发商排名及高评价楼房地产分析
  • 扩展欧几里德算法
  • 2025年市面上别墅石材品牌、行业内别墅石材公司、市场别墅石材供应商、目前别墅石材源头厂家、口碑好的别墅石材品牌推荐排行榜
  • 根号分治、分块、莫队
  • 集采带量下医疗器械生产厂家如何通过数字化转型实现降本增效
  • 告别命名误区!深度剖析TurtleBot3 vs. TurtleBot4 开源平台
  • 102302105汪晓红作业1
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • 解决Java项目在复杂网络环境下访问外网不通的问题
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 【IEEE出版 | 往届均已完成见刊检索 | 见刊检索稳定】第七届信息与计算机前沿术国际学术会议(ICFTIC 2025)
  • 动态点分树
  • 2025年隔热条厂家权威推荐榜:尼龙隔热条/PA66尼龙隔热条/建筑用隔热条/断桥铝门窗隔热条/幕墙隔热条/阳光房隔热条/国标隔热条精选
  • 「Gym 104901F」Say Hello to the Future
  • 渐进过程中大O与小o混用
  • 基于MATLAB的光学CCD全息成像仿真程序实现
  • el-date-picker样式修改
  • unity管理器设计:Manager of Managers