耳分解
对于无向图中的任意边双和有向图中的任意强联通都可以按照此方法构造:
- S = { u } S=\{u\} S={u}
- 每次找 S S S 的两个元素 u , v u,v u,v(可相同),找一条不经过 S S S 的路径,并把路劲上的所有点加入 S S S
可以拿来dp,来构造某种条件的边双。
常用的状态设计 f ( S ) f(S) f(S),然后枚举 T T T 为 S S S 补集的子集。再枚举 u , v ∈ S u,v\in S u,v∈S。这种是 O ( 3 n × n 2 ) O(3^n\times n^2) O(3n×n2)。
部分题目可以: f ( S , i , j ) f(S,i,j) f(S,i,j) 当前在 i i i 目标点为 j j j,然后转移可以枚举 j j j 或者是不在 S S S 中的点。 O ( 2 n n 2 ) O(2^nn^2) O(2nn2)
- [SNOI 2013] Quare 无向图的
- Gym 102759 C 有向图
双极定向
给无向图每条边定向后可以变成DAG,且 s s s 为总起点, t t t 为总终点。
一般会在圆方树上乱搞。过段时间要去整理一下。
- Codechef CUREK
- [洛谷月赛] 白鹭兰
双极定向有个优良性质:考虑其拓扑序为 p p p
则 p s , … , p i p_s,\dots,p_i ps,…,pi 和 p i + 1 , … p t p_{i+1},\dots p_t pi+1,…pt 的子图都联通。