最小树形图

给定一个有权有向图 \(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.mzph.cn/news/947974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全资源大全:助你紧跟前沿威胁与防御技术

本文详细介绍了网络安全专家常用的各类资源,包括黑客新闻网站、技术博客、威胁情报平台、YouTube技术频道、社交媒体专家和网络安全播客,帮助读者构建完整的学习和情报获取体系。帮助我保持领先的网络安全资源 如何跟…

详细介绍:【Ubuntu 20.04升级python3.9后终端打不开的bug】

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

SVN 主分支合并之通过主分支合并子分支执行流程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

鼾声识别芯片方案和睡眠产品的应用场景

相关数据显示,中国约有1.5亿人存在睡觉打鼾的情况。随着年龄的增睡觉打鼾人群的占比越高,30岁以上人群中约30%打鼾,40岁以上人群约为40%,而到了65岁以后,这一比例会达到约50%。改善打鼾的几种方式 调整睡眠姿势 通…

Win11 使用 QEMU 虚拟机运行 VC6 的可行性

有些学校或者老师仍然在要求学生必须使用 VC6 来学习 C 语言基础。但是现在的 Win11 已经逐渐开始停止支持 VC6 这个上古时期的 IDE 的运行。 有的时候不是要建议学生换用现代的 IDE 来学习,而是学校或者老师要求学生…

20232415 2025-2026-1 《网络与系统攻防技术》实验三实验报告

一、实验目的 1.利用msfvenom生成多种类型的文件及其多次编码版本 2.利用veil生成恶意代码 3.利用C语言结合shellcode生成恶意文件 4.利用upx压缩壳以及hyp加密壳技术实现免杀 5.开启杀软后回连实测 二、实验过程 接下…

2025年工程管理软件公司综合推荐榜:助力建筑行业数字化升级

随着建筑行业数字化进程加速、工程质量监管趋严及项目管理效率需求提升,工程管理软件已从大型建筑企业专属工具,逐步渗透至中小型建筑公司、监理单位、验房机构及各类工程项目现场。2025年,工程管理软件市场规模预计…

2025年离心式喷雾干燥机权威推荐榜单:小型喷雾干燥机/大型喷雾干燥机/离心喷雾干燥机源头厂家精选

随着制药、食品、化工等行业对粉体质量要求不断提升,离心式喷雾干燥机市场呈现专业化、智能化发展趋势。据行业数据统计,2025年中国离心喷雾干燥设备市场规模预计达42亿元,年增长率稳定在12%,其中智能化控制系统渗…

Win11 使用 Copy v86 在线网页运行 VC6 学习 C 语言的可行性

Win11 使用 Copy v86 在线网页运行 VC6 学习 C 语言的可行性 首先,程序员节快乐。有些学校或者老师仍然在要求学生必须使用 VC6 来学习 C 语言基础。但是现在的 Win11 已经逐渐开始停止支持 VC6 这个上古时期的 IDE 的…

现代c++编程体验2

##task1 #代码1 #include "2T.h"2 #include <iostream>3 #include<string>4 5 const std::string T::doc{"a simple class sample"};6 const int T::max_cnt = 999;7 8 int T::cnt =0…

人工智能中的线性代数核心知识(Linear Algebra for AI)- 微积分 - 何苦

人工智能中的线性代数核心知识(Linear Algebra for AI)- 微积分人工智能中的微积分核心知识(Calculus for AI) 微积分 1. 导数(Derivative)描述函数在某一点的瞬时变化率,是AI优化(如梯度下降)和模型参数求解…

Excel高性能异步导出完整方案!

前言 在大型电商系统中,数据导出是一个高频且重要的功能需求。 传统的同步导出方式在面对大数据量时往往会导致请求超时、内存溢出等问题,严重影响用户体验。 苏三商城项目创新性地设计并实现了一套完整的Excel异步导…

化繁为简:解密国标GB28181算法算力平台EasyGBS如何以兼容性与易用性赋能安防集成

化繁为简:解密国标GB28181算法算力平台EasyGBS如何以兼容性与易用性赋能安防集成引言:国标协议的“理想”与“现实” 国标GB28181协议作为中国安防领域的通用语言,其初衷是为了解决不同品牌、不同系统之间的互联互通…

国标GB28181算法算力平台EasyGBS视频实时监控系助力实现换热站全景可视化管理

国标GB28181算法算力平台EasyGBS视频实时监控系助力实现换热站全景可视化管理一、方案背景 在城市供热体系中,换热站作为连接热源与用户的核心枢纽,其运行稳定性直接影响供热质量。面对供热规模扩大与需求升级,传统…

CSS补充

2025.10.27 打卡 不想再拖了,快速过一遍CSS结束吧。渐变,就是颜色可以渐变,要做叫美工做。阴影,可以用来加阴影,也可以设置负的值来表示一个包围文字的边框。box-shadow可以创建卡片。一些文本的高级用法,here@f…

「LG3600-随机数生成器」题解

题解记录P3600 随机数生成器 sol 期望不太方便,转计数。那么就是要求对每个值,最后结果恰为这个值的方案数。 恰好不太好求,考虑差分,转化为至多,那么就是要对每个值求答案不超过这个值的方案数。 要求所有区间区…

【每日Arxiv热文】还在为视频编辑发愁?港科大蚂蚁集团提出Ditto框架刷新SOTA!

【01 论文概述】 论文标题:ScalingInstruction-BasedVideoEditingwithaHigh-QualitySyntheticDataset 作者团队:香港科大、蚂蚁集团、浙江大学、东北大学 发布时间:2025 年 10 月 17 日 论文链接:https://arxiv.or…

计算机毕业设计springboot音乐畅听系统 基于Spring Boot框架的智能音乐播放系统编写 Spring Boot驱动的音乐在线欣赏平台构建

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

vue2 封装组件使用 v-mode【el-radio,el-input】

vue2 封装组件使用 v-mode【el-radio,el-input】v-model 在组件上使用,只能更改一个值。 sycn [singk] 1、在组件上使用 v-model ,父组件 v-model ,子组件接收value , $emit(value,xxxx)2、sync [singk]. 父组件 …

MathType7下载包安装教程2025最新下载+安装+汉化激活(附安装包,超详细)

目录前言一、MathType7 下载二、MathType7 软件介绍三、MathType7 安装 + 汉化激活全步骤(附细节提示) 前言 本文是 2025 年最新 MathType7 安装全流程教程,从MathType7 下载、安装到汉化激活、Word 配置都讲透,还…