题解:Luogu P11976 [KTSC 2021] 通信网络 / communication

news/2025/10/5 19:35:13/文章来源:https://www.cnblogs.com/P2441M/p/19126943

一些约定

下文中的 \(x\) 的祖先,都指位于 \(\bm{fa_x}\) 到根节点路径上的点(也就是不包括 \(x\))。

对于无向图 DFS 生成树中的一条返祖边,我们称深度较浅的那端为上端点,深度较深的那端为下端点。

题意

对于一张无向图,若将某个点删去后图不连通,则称这个点是危险的。给定一张 \(n\) 个点 \(m\) 条边的无向连通图,对于每条边,求出将这条边从图中删去后危险的点的数量。\(2\leq n\leq 2.5\times 10^5\)\(1\leq m\leq 10^6\)

题解

感谢 @Miraik 和我讨论本题的相关做法。

KTSC 好难啊。

比较复杂的图结构分析题。

首先特判删的边是一条割边的情况,此时删去这条边后图已经不连通了,设分裂出的两个连通块分别是 \(S_1,S_2\),则答案为 \(n-[|S_1|=1]-[|S_2|=1]\)

接下来假定删去的边不是割边,那么危险的点的就等价于割点了。我们发现,删去一条边后,割点的数量不会减少,且只可能让和这条边处于同一个点双的点从不是割点变成割点。于是考虑对每一个点双分开做,对于每一个点双 \(G'\),我们建出其 DFS 生成树,考虑分类讨论删去的边是树边还是返祖边。

返祖边

设这条返祖边为 \((u,v)\),其中 \(dep_u>dep_v\),考虑删去这条边会让哪些点变成割点。考察割点判定条件 \(low_v\geq dfn_u\),可以发现此时一定是删去这条树边后,某个点 \(v\)\(low_v\) 变成了 \(dfn_v\),也就是回不到上面了,从而使得 \(fa_v\) 变为割点。

刻画这个条件,对于每条树边记录其被覆盖次数 \(cov_e\),对于每条返祖边 \((u,v)\),设 \(v\)\(u\) 方向上的儿子为 \(s\),我们给其覆盖范围 \(C(u,v)=\operatorname{path}(u,v)\backslash (v,s)\) 中的边的 \(cov\)\(1\)。然后每条返祖边 \((u,v)\) 的答案就是

\[\sum_{(p,fa_p)\in C(u,v)}[cov_{(p,fa_p)}\leq 1\land cut_{fa_p}=0] \]

其中 \(cut_u\) 表示点 \(u\) 是否为割点。注意这里之所以把 \((v,s)\) 去掉是因为删去 \((u,v)\) 并不会让 \(cut_v\) 发生改变。

容易想到使用树上差分维护上述过程。具体来说,对于每条返祖边 \((u,v)\),我们给 \(d_s\)\(1\),给 \(d_v\)\(1\)。对 \(d\) 做一次子树和 \(cov\),然后再求出根链上有多少边满足 \(cov_{(p,fa_p)}\leq 1\land cut_{fa_p}=0\),计算答案的时候同样差分一下即可。

这部分实现时,可以通过维护 DFS 栈得到 \(v\)\(u\) 方向上的儿子 \(s\),从而代替倍增。这样我们就可以 \(\mathcal{O}(n)\) 解决这部分。

树边

这部分比较困难。

设我们删除的树边为 \((u,fa_u)\)。可以注意到,对答案有贡献的点要么在 \(sub_u\) 中,要么是 \(fa_u\) 的祖先。这是因为删去 \((u,fa_u)\) 只会影响到计算 \(low\) 时路径经过这条边的那些点,那么显然这个点要和 \(u,fa_u\) 构成祖先链。

继续分类讨论产生贡献的新的割点 \(x\) 的位置。

\(x\)\(fa_u\) 的祖先

\(y\)\(x\)\(u\) 方向上的儿子。考虑把 \(x\)\((u,fa_u)\) 从图中删去后,把整张图分为三个部分:\(y\) 子树外、\(y\) 子树去掉 \(u\) 子树和 \(u\) 子树。我们把它们依次称为上、中、下三个部分。

这里明确一下上部分的定义,更确切地,它应该是指 \(x\) 的所有不是 \(y\) 的儿子子树,和 \(x\) 子树外的部分。由于 \(x\) 最初不是割点,所以不难发现这两块应当是连通的,因此我们把它们划为一个部分。

\(x\) 起初不是割点,因此 \(sub_y\) 中必然有返祖边连向上部分。而删去 \((u,fa_u)\)\(x\) 要成为割点,因此中部分和下部分中,有且仅有一个部分有返祖边连向上部分。

  • 中部分中有返祖边连向上部分:也就是下部分和中、上部分不连通。但是树边都不是割边,所以下部分中肯定有连出下部分的返祖边,为什么删去 \((u,fa_u)\) 就会导致上下不连通呢?仔细思考可以发现,此时一定是所有下端点在 \(sub_u\) 内,上端点在 \(u\) 的祖先处的返祖边,上端点都为 \(x\),这样没了树边的连接后,\(x\) 自然就成为了割点。

  • 下部分中有返祖边连向上部分:也就是中部分和上、下部分不连通。

    首先,中部分怎么和下部分不连通?这是简单的,只需要保证所有从 \(sub_u\) 内连出去的返祖边的上端点的深度 \(\leq dep_x\) 即可。

    那中部分如何和上部分不连通?其实就是对于每条下端点在 \(sub_y\) 内、上端点为 \(x\) 的祖先的返祖边,当我们试图从中部分向下走到某个下端点时,会被删除的那条树边挡住。更直接地刻画这个条件:考察所有上端点为 \(x\) 的祖先,下端点在 \(sub_y\) 内的返祖边,我们设这些返祖边的下端点的 LCA 为 \(d\),那么删除的树边必然在 \(y\)\(d\) 的路径上。

怎么实现呢?由于维护的东西比较类似,这里一并包含了下面一种 case 要维护的东西。

一个看上去比较难维护的东西是:对每条树边 \((u,fa_u)\),求出所有下端点在 \(sub_u\) 内,上端点为 \(u/fa_u\) 的祖先的返祖边的下端点的 LCA。我们利用点集 LCA 的经典结论:

\[\operatorname*{lca}_{x\in S}x=\operatorname{lca}\left(\arg\min_{x\in S}\{dfn_x\},\arg\max_{x\in S}\{dfn_x\}\right) \]

因此考虑维护所有符合条件的返祖边的下端点的 \(dfn\) 的最小值/最大值。考虑每条返祖边 \((u,v)\) 对这个值的影响,发现就是把 \(u\)\(v\) 的路径上的点(实际上可能不会包括最浅的一两个点)的答案和 \(dfn_u\)\(\operatorname{chkmin}/\operatorname{chkmax}\)。不妨把所有返祖边按照 \(dfn_u\) 从小到大/从大到小排序,这样就会变成覆盖之后答案不会再改变。此时我们可以用树上并查集维护,每次跳到祖先中最深的没被覆盖的点修改答案即可。

可以发现我们还需要对于每个点 \(u\),求出下端点在 \(sub_u\) 内,上端点为 \(u/fa_u\) 的祖先的返祖边中,最浅/最深的上端点。每条返祖边的影响还是相当于把一条祖先链对某个值 \(\operatorname{chkmin}/\operatorname{chkmax}\),同样用树上并查集维护即可。预处理上面这些值已经足够了。

容易发现上文章提及的两种情况是独立的。第一种情况是容易的,注意判从 \(sub_u\) 内连上去的点不能是 \(fa_u\) 且原来不是割点即可。

对于第二种情况,把形如“删除的树边必然在 \(y\)\(d\) 的路径上”的限制挂到 \(y\) 上,把每条树边 \((u,fa_u)\) 挂在从 \(sub_u\) 内连出去的返祖边的最深的上端点上,按照深度从大到小排序。考虑差分,我们在 DFS 序上维护一个 BIT,对于每条限制,我们在 \(dfn_d\) 处单点 \(+1\),在 \(dfn_y\) 处单点 \(-1\),询问时查询 \(sub_u\) 对应的 DFS 序区间和即可。注意加入限制时需要保证 \(fa_y\) 原先不是割点。

\(x\)\(sub_u\)

这里 \(x\) 要有贡献就不能为 \(u\)。然后还是考虑把整个图分为上、中、下三个部分:\(u\) 子树外、\(u\) 子树去掉 \(x\) 子树、\(x\) 的所有儿子子树。

显然上、中部分在删去 \((u,fa_u)\) 后必然不连通,否则这条树边删去与否并不会带来影响。类比前面的做法,考察所有下端点在 \(sub_u\) 内,上端点为 \(u\) 的祖先的返祖边,设这些返祖边的下端点的 LCA 为 \(d\),那么 \(x\) 必然在 \(u\)\(d\) 的路径上,但不包括 \(u\)

接下来考虑下部分,可以发现 \(x\) 为割点的充要条件是对于它的每个子树,其要么只与上部分连通,要么只与中部分连通(由于 \(x\) 起初不是割点,所以不能是和上、中部分都不连通)。依次处理 \(x\) 的每个儿子 \(s_i\),考察所有下端在 \(sub_{s_i}\) 中,上端点为 \(x\) 的祖先的返祖边,设这些返祖边的上端点中的最浅深度为 \(l\),最深深度为 \(r\),那么这就限制了 \(dep_u\notin [l+1,r]\)。于是对于每个点 \(x\),我们可以得到 \(\mathcal{O}(deg_x)\) 个深度区间,表示 \(dep_u\) 不能落在这些区间中。

来考虑实现。对于每条树边,我们想要查询 \(u\)\(d\) 不包括 \(u\) 的路径上能作为新的割点的数量,显然要差分成根链询问,然后离线下来挂到点上。我们在深度上维护一棵 BIT,每次 DFS 到一个点 \(x\) 时求出 \(\mathcal{O}(deg_x)\) 个限制区间,对这些区间做区间并使得区间之间无交,然后对于每个区间在 BIT 上区间 \(+1\),离开时撤销。询问时我们单点查询 \(dep_u\),就可以得到这个点被覆盖了多少次,也就是其对应的根链上不合法的点数,用当前深度减去不合法的点数就是合法的点数了。貌似有用支持区间加、区间最小值个数的线段树维护 DFS 序的做法,我太菜了,不太懂是什么意思。


综合上述讨论,我们就可以 \(\mathcal{O}(n\log{n})\) 地解决这个问题了。

代码

写得比较丑陋,放个链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928646.shtml

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

相关文章

弦振动方程

弦振动方程 参考:https://chat.deepseek.com/a/chat/s/36c8bd34-0600-4a94-be96-8363d028df9d

理论构建尝试整理

通过脑机接口的电信号实时训练神经网络模型 研究方向:生成式认知主体 导论: 自从1947的 但至少在我看来现如今的人工智能发展方向完全是走错了路线 根据图灵测试的逻辑来讲 著名的图灵测试诞生,按照“人工智能之父”…

应用安全 --- 安卓安全 之 调用隐藏

应用安全 --- 安卓安全 之 调用隐藏可能会将调用的so中方法写入jnionload中动态注册同时将函数字符串加密存储这个问题很常见,有几种可能的原因。让我帮你分析一下: 可能的原因和解决方案 1. 函数名被混淆或压缩bash…

电子商城网站开发平面广告设计素材网

PTA 排队“夹塞”是引起大家强烈不满的行为,但是这种现象时常存在。在银行的单窗口排队问题中,假设银行只有1个窗口提供服务,所有顾客按到达时间排成一条长龙。当窗口空闲时,下一位顾客即去该窗口处理事务。此时如果已知第i位顾客…

淘宝客网站哪个好克隆视厅网站怎么做

人工智能和芯片供应商 XMOS 宣布与嵌入式音频软件专家 DSP Concepts 建立合作伙伴关系。该合作协议将允许音频开发人员将 XMOS 的高度确定性、低延迟的 xcore.ai 平台与 DSP Concepts 的 Audio Weaver 软件结合起来。该软件使用户能够利用多核算力以图形方式设计和调试音频和语…

商城网站开发视频邯郸网站设计邯郸网站制作

简介: 《实时数仓入门训练营》由阿里云研究员王峰、阿里云资深技术专家金晓军、阿里云高级产品专家刘一鸣等实时计算 Flink 版和 Hologres 的多名技术/产品一线专家齐上阵,合力搭建此次训练营的课程体系,精心打磨课程内容,直击当下…

2025聚合硫酸铁厂家最新企业品牌推荐排行榜,工业聚合硫酸铁,混凝剂聚合硫酸铁,固态聚合硫酸铁,粉末聚合硫酸铁,硫酸亚铁公司推荐!

当前聚合硫酸铁行业发展迅速,市场上生产厂家数量众多,但质量参差不齐,给采购方带来诸多选择难题。部分厂家存在生产工艺落后、产品纯度不足的问题,导致其生产的聚合硫酸铁在水处理等应用场景中效果不佳,不仅影响水…

2025成型机厂家最新企业品牌推荐排行榜,冷弯成型机,卷帘门成型机,卷闸门成型机,彩钢瓦成型机,货架成型机推荐!

在当前金属加工行业快速发展的背景下,冷弯成型机作为关键生产设备,其质量与性能直接影响企业的生产效率和产品品质。然而,市场上成型机厂家数量众多,实力参差不齐,给企业选购带来诸多困扰。部分厂家缺乏核心技术,…

基于springboot的家政服务预约系统 - 指南

基于springboot的家政服务预约系统 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

天水市秦州区作风建设年网站wordpress文章图片大小

在使用proteus的时候,有时候你会发现点击调试开始运行后,串口虚拟终端没有自动弹窗的问题,其实照成这种现象的原因是你在使用的过程中移动了器件位置或者是对整个视窗使用鼠标滚动进行缩放了,如果要重新弹窗则需要进行以下操作: …

网站设计人员就业要求正邦设计怎么样

2024年2月10日力扣题目训练 2024年2月10日力扣题目训练551. 学生出勤记录 I557. 反转字符串中的单词 III559. N 叉树的最大深度241. 为运算表达式设计优先级260. 只出现一次的数字 III126. 单词接龙 II 2024年2月10日力扣题目训练 2024年2月10日第十七天编程训练,今…

手机网站开发工具影视网站建设需要学什么

来源:股权投资论坛目录一、隐形冠军的概念二、隐形冠军的四个特征三、隐形冠军为何隐形四、隐形冠军到底有多牛五、如何成为隐形冠军六、中国隐形冠军多吗1隐形冠军的概念“隐形冠军”这个概念是赫尔曼西蒙教授提出的。1986年,他在研究德国出口数据时发现…

2025 年 PP 管厂家最新推荐榜:甄选 pp 风管,PP 喷淋塔,pp 洗涤塔,pp 通风管道优质公司!

引言当前 PP 管市场供需两旺,但采购痛点愈发凸显。部分厂家为压缩成本选用劣质原料,导致产品耐腐、抗老化性能不达标,使用中频繁出现破裂渗漏,既造成经济损失又埋下安全隐患。市场上厂家水平参差不齐,多数缺乏专业…

解密并下载受DRM保护的MPD(DASH流媒体)加密视频 - 教程

解密并下载受DRM保护的MPD(DASH流媒体)加密视频 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

在PyCharm中运行 wandb.login();

在PyCharm中运行 wandb.login()wandb: ERROR api_key not configured (no-tty). call wandb.login(key=[your_api_key])Traceback (most recent call last): File "E:/assificnLi-v2.py", line 60, in <…

网站管理员在哪里浙江网站建设而

我们总是希望MySQL能够获得更高的查询性能&#xff0c;最好的办法是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点&#xff0c;就会发现&#xff1a;很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。当向MySQL发送一个请求的…

06.概念二:神经网络 - 详解

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

机器学习科学家分享技术写作艺术

本文介绍了一位应用科学家如何通过技术写作分享机器学习系统、数据科学方法论等专业内容,探讨了写作对技术学习和职业发展的重要性,以及沟通能力在科技领域的价值。Eugene Yan 与科学写作艺术 Eugene Yan 是某中心的…

同性恋色做视频网站那个做图网站叫什么

封装是把过程和数据包围起来&#xff0c;对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念&#xff0c;即现实世界可以被描绘成一系列完全自治、封装的对象&#xff0c;这些对象通过一个受保护的接口访问其他对象。封装是一种信息隐藏技术&#xff0c;在java中…

AT VP 记录

AGC057 A 可以注意到用位数少的一定不优,因为其向外拓展的方式更多导致不能用的数也越多。所以我们肯定先选择位数最多的,然后考虑剩下的还有哪些可以选。假设 \(r\) 的位数为 \(k\),考虑 \([\max(10^{k-1},l),r]\)…