抄论文 抄 JCY
耳分解
对于图 的子图 ,若一条简单路径或者简单环 满足 ,那么称之为一个耳,如果是简单路径则称之为开耳。
如果能将图分为一个子图序列 ,其中 为一个环,且 是一个(去掉首尾的)耳,那么称之为一个耳分解。如果全是开耳则为开耳分解。
在有向图中也能类似地定义。
- 无向图边双连通 存在耳分解;
- 无向图点双连通 存在开耳分解;
- 有向图强连通 存在耳分解。
显然。 构造耳分解,考虑从某个点作为根 开始,时刻维护当前子图是个包含 的连通块 。对于以 为根的 dfs 树,一定存在一个点 满足 ,那么一定存在一条非树边覆盖 这条边,从 的某个祖先 出发,到 的某个后代 ,那么即找到一个 为两端点的耳,可以将其加入。最后 为全集时即可直接将剩余还不在 中的边加入。(开耳分解就是 可以为 )
对于有向图, 直接归纳; 考虑以 为根求出 dfs 树以及 dfs 序,按照 dfs 序从小到大加点,(为了方便表述按照拓扑序重标号)如果 已经在当前子图 中则跳过,否则考虑此时 均在 中,而 说明 存在后代 使得存在边 其中 ,那么加入 这个耳即可。
将无向图 定向为强连通图当且仅当 边双连通
若存在割边则不合法。否则考虑将耳分解中的所有耳均定向为有向环或者有向路径即可。
双极定向
对于无向图 和两个点 ,以下四个命题等价:
- 连接 之后点双连通。
- 中圆方树方点构成一条链, 是圆方树的一条直径。
- 能将 定向为一个 DAG,使得 无入度且 无出度,其余点出入度均不为 0。(双极定向)
- 存在一个排列 使得任意前缀以及任意后缀的导出子图是连通的。
其中 1. 2. 等价显然;4. 的排列就是 3. 中的拓扑序。
由 1. 推 3.:初始时挑出包含 的环,定向。开耳分解时根据两端点的拓扑序来确定耳上边的方向。(实现的话复杂度是平方的)
由 4. 推 2.:考虑逆否命题。将排列看成不断将白点染成黑点,时刻保证黑色白色内部连通。存在一个割点周围有至少三个点双,那么在染黑它之前至少有两个白色点双连通,染黑它之后这两个白色点双就不连通了。
如何简易地给出双极定向的构造(P9394 白鹭兰):
对于一个点只保留父边以及子树最浅返祖边(也就是 记录的那个)不会影响点双。对于叶子 可以在这两个点任意之一被染黑后立刻染黑 ,所以在这两个点的记录的列表 中 push_back ,将 删去,不断剥叶子即可。从根开始遍历列表递归染黑即得到一个合法构造。
以 为根,不去剥 ,这样子求出所有 之后,对 到 路径上的每个 依次进行递归染色即可。染 时 就是最后一个染完的(否则那个没被染的点并没有往上连的返祖边,也就是存在割点)。
求出拓扑序之后便可求出双极定向。
例题:洛谷 P9394 白鹭兰,QOJ 4805。
竞赛图
竞赛图构造哈密顿路径:时刻维护一条链,尝试整合。
强连通竞赛图构造哈密顿回路:对于哈密顿路径从前往后,时刻维护一个环以及后缀一条链,保证环全都是连向链。往链后面 push_back 点的时候如果该点有连向环的边,那么就将链整合进环中。
强连通竞赛图是泛圈的:对于 , 均存在长度为 的简单环。
由于已经有长度为 的环,只需证明存在长度为 的环,从而其导出子图是大小为 的强连通竞赛图,即可完成归纳。考虑构造哈密顿回路的过程,如果加入最后一个点之前已经是一个 的环那么直接就找到了,否则将链的开头去掉,结尾 push_back 最后一个点,再将这个链整合进环中即可,
Landau 定理:竞赛图出度序列 合法当且仅当 ,且 ,并且取等处的 即为缩点后的 scc 划分处。
的最小割:初始 ,此时割的大小就是 到 的边数。考虑将一个点 从 扔到 的时候,最小割的变化量为:。所以将出度从小到大排序,一定是扔一个前缀。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2021-04-27 第三届山东省青少年创意编程与智能设计大赛总结