专栏文章

圆方树学习笔记

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minjou98
此快照首次捕获于
2025/12/02 03:31
3 个月前
此快照最后确认于
2025/12/02 03:31
3 个月前
查看原文

介绍

边双缩点得到树,强连通缩点得到 DAG,而点双与之对应的就是圆方树。
我们这里将点双定义为不存在割点的图,在点数 >2> 2 的时候等价等价于任意两点间存在点不重合的两条路径
单点不定义是否为点双,根据题意特判。
在圆方树中我们有圆点方点,原点对应原图的点,而方点对应原图的点双。如果原图中一个点属于某个点双,那么在圆方树中,对应的圆点就连接对应的方点。

建树

与割点的求法几乎一致,在求点双的过程中加上连边操作即可。
判断是一个点 uu 是割点
  1. 存在儿子 vvlowvdfnulow_v \ge dfn_u
  2. uu 为根,且儿子数 =1= 1 时不为割点。(这一点在求点双的时候不用管)

例题

P4630 [APIO2018] 铁人两项

我们先考虑固定 s,fs,f,那么 cc 的数量就是两点间简单路径的并的大小。
OBS:若 a,b,ca,b,c 位于同一个点双,则存在一条简单路径:abca\rightarrow b\rightarrow c。证明不难。
建出圆方树后一目了然。
一个类似点边容斥的技巧:将方点权值赋为点双大小,圆点权值赋为 1-1
答案就为两两圆点之间的权值和,容易计算。
固定 cc 统计 s,fs,f 应该也是能做的。

评论

0 条评论,欢迎与作者交流。

正在加载评论...