
支配树(Dominator Tree)
问题描述
给定一个含 N 个顶点、M 条边的有向图,以及一个根节点 S(0≤S<N)。
求该图关于根 S 的支配树(Dominator Tree):
- 顶点 u 支配 顶点 v(记作 u≫v),若从 S 到 v 的每条路径都经过 u;
- 支配树中,每个非根顶点 i 的父节点 pi 是其直接支配者(immediate dominator),即除 i 自身外,支配 i 且被所有其他支配 i 的顶点所支配的唯一顶点;
- 若 i 不可达自 S,则 pi=−1;根节点 S 满足 pS=S。
约束条件
- 1≤N≤200000
- 0≤M≤200000
- 0≤S,ai,bi<N
输入
N M S
a0 b0
a1 b1
:
aM−1 bM−1
输出
p0 p1 ⋯ pN−1
pi 是顶点 i 在支配树中的父节点:若 i 不可达自 S,则 pi=−1;否则 pi 为其直接支配者;特别地,pS=S。
5 6 0
0 1
1 2
2 3
3 4
0 3
2 4
0 0 1 0 0
8 8 4
4 2
4 3
2 0
3 0
0 1
3 5
3 6
7 6
4 0 4 4 4 3 3 -1