题解:洛谷 P5180 【模板】支配树

图论模拟赛被T4的有向图必经点硬控了 \(10^9 + 7s\),写篇题解纪念一下。

其实,求有向图的必经点,通法就是支配树。

一些定义:

  • 支配点:在确定起点 \(S\) 的情况下,对于一个点 \(k\),若存在 \(x\),使得删除 \(x\) 以及与 \(x\) 连接的边后,\(x\)\(k\),不再强连通,那么就称 \(k\)\(x\) 的支配点。

  • 支配树:一棵以起点 \(S\) 为根的树,满足对于树上的任意一个点 \(u\),它是它子树内所有点的支配点,且 \(u \rightarrow S\) 这条树链上的点都是 \(u\) 的支配点。

我们发现,其实求出了支配树,那么每个点能支配的点的个数就是它的子树大小,现在考虑如何求出支配树。

我们先对整个图进行一次深搜,求出每个点的 \(dfn\) 序。

定义半支配点为 \(semi_u\),满足从 \(semi_u\)\(u\) 的路径上只走 \(dfn\) 序大于 \(u\) 的点,且 \(dfn\) 序最小的那个点。

定义直接支配点为 \(idom_u\),满足 \(idom_u\) 在支配树上是 \(u\) 的父亲。

首先,每个点的半支配点是唯一的,因为它是所有满足条件的点中 \(dfn\) 序最小的。

我们考虑如何求出半支配点,近而求出直接支配点。

考虑两个点 \(u, v\),其中 \(v\)\(u\) 之间有直接的边相连,那它们的 \(dfn\) 关系只有大于和小于两种情况,如果 \(v\)\(dfn\) 序小于 \(u\),那么 \(v\) 有可能是 \(u\) 的半支配点,

posted @ 2024-11-12 14:36  JPGOJCZX  阅读(4)  评论(1编辑  收藏  举报