『图的连通性进阶』Day3 略解
前言
我们趋行在人生这个亘古的旅途,在坎河中奔跑,在挫折里涅槃,忧愁缠满全身,痛苦飘洒一地。我们累,却无从止歇;我们苦,却无法回避。
今天是连通性的进阶题目,重点是耳分解,双极定向,以及边三连通分量。
因为调题速度过慢,导致被硬控,所以第二天晚上补的差不多了再来写的。
感觉知识点方面也需要写个东西稍微总结一下,看周末有没有时间和心情吧。
A
简单来说,就是选择边权最小的边让原图满足点双连通。
可以发现,这个边权最小的点双连通实际上就是从最开始一个单独的点,一直加相对于当前的点集的开耳,直到整个图上的点都被加进去,然后保证边权和最小。
显然有一个状压
其实可以考虑稍微优化一下,即不是每次一次性的将整个开耳加进去,而是一个点一个点的加。
即定义
需要非常注意重边的情况,比如
我的实现是
B
以前应该做过,但是我再看一遍之后貌似还是不会。
首先,不妨设
另外,我们只需要考虑联通的导出子图点集大小分别为
观察特殊性质,发现有一档
本质上就是找到一条边
显然可以通过遍历一次树来判断。
但是其实进一步的,我们可以通过更精确的方式来描述这个合法。
我们其实只需要考虑这个树的重心,如果它能找到一个子树的
可以发现只要合法,就必然会存在一个方案跟重心有关,所以我们只需要关注这个重心。
考虑如何扩展到一般图。
显然,为了往树上我们刚刚的方法靠近,我们考虑弄出这个图的搜索树,并求出这个搜索树的重心。
如果这个重心已经可以做到存在一个儿子的大小
考虑枚举这个重心的儿子,显然在上面的合法情况排除掉之后,有
当然,如果找不到
注意一下输出方案的细节。
感觉思路很自然,但是我就是想不到啊啊啊。
C
真恶心题,待会再来写。
D
边三模板题,但是当我看见我的点双和边双模板在洛谷上都没有过的时候,我的心就已经凉了半截了。
警示后人,本人试图通过类似点双的删边的方式来求边三,即我把要删的边一个一个删掉,剩下的连通块就对应一个边三,但是他是不对的!!!
简单来说就是,为了让其他的连通块分开,我们就需要删掉一些边,但这就会导致你需要的一个连通块内部联通的边被删掉,然后怎么也够不成这个连通块,具体可以看我同学知道我花费半天得出这个自然做法是错误而写的帖子。
总之,下次我做板子题一定去看别人的实现方法,我再也不乱搞了!!!
首先,先看怎样的大小为
-
首先是一条单独的树边,满足其是割边(也就是没有包含这条边的非树边)。
-
非树边+树边的组合,即包含这条树边的非树边只有当前这一条非树边。
-
树边+树边的组合,满足分别包含这两条树边的非树边的集合相同。
第三种情况不一定好理解,所以盗一张图片过来:
其中,蓝色是树边,红色是非树边。
然后我们发现我们需要快速计算一条树边被包含的非树边的集合,貌似不是一件很容易的时间。
这里需要用到一个
考虑对于每条非树边随机赋一个
发现,若我们定义树边的权值表示一条树边被包含的非树边的权值异或和,其就是这条树边在搜索树上深度更深的端点,其子树内(包括他自己)所有的点的权值的异或和。这一步应该还是比较好理解的。
故,对于没有被非树边包含的树边,这条树边的边权显然就是
接下来考虑怎么求连通分量。
首先可以考虑把第一二种割集所涵盖的所有树边从搜索树上删掉(至于是哪些树边,就使用刚刚的异或哈希的技巧判断即可。),然后就会剩下若干个连通块,然后在这些连通块中分别考虑第三种割集的情况。
观察到对于所有第三种割集所对应的两条树边,我们其实只需要考虑相邻的树边,因为对于同种的配对的所有树边都在一条祖孙链上。
破防了,我要摘抄题解。
具体的,我们在 dfs 回溯的过程中维护一个 Hash 表,这样对于每条树边,我们能快速求出它下方与它配对的另一条树边,然后直接删掉两条边之间的连通块,这个连通块中一定不存在可以配对的边了,因为如果存在,也在之前的过程中删完了。这也就是说,删掉的这个连通块就是一个边三连通分量。删掉所有配对边之间部分之后,剩下的部分也是一个边三连通分量。
然后就过了。
E
第一题的近似题目,比较轻松。
是给题目中的边定向,满足原图是一个强连通分量。
采用有向图中耳的性质,依然仿照第一题的方式进行状压求解。
但是每条边都必须定向产生代价,而你第一道题里每条边并没有都被使用上。
故答案先全部加上每条边任意定向的权值,然后比如
刚好卡过。
F
结论题,体现看论文的重要性。
这些东西后面有空了放到知识点里面记下来。
结论如下:
混合图
(即可能同时包含有向边和无向边的图)可以被(对无向边)定向为强连通图,当且仅当以下两个条件满足:
- 将有向边都看作无向边时,图边双连通;
- 将无向边拆成一对反向的有向边时,图强连通。
而本题是要给需要定向的边定向之后,满足图有强连通性,且保证存在解,任意一组即可。
所以其实,我们直接对于要定向的边,一个一个枚举怎么定向,先随便定一个
G
太难了,效率低下的我失去了时间。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】