Skip to main content

例4

例4 嗅探器

嗅探器

给出一无向图连通图,以及图上的两点 aabb,求删掉哪个点以后,可使得 aabb 分别位于不同的连通块?

所求点 uu 为割点,且删掉 uu 之后,aabb 分别位于不同的连通块。 因此,我们从点 aa 开始执行 tarjan 求割点算法,如果找到的割点位于 aabb 的路径中,那么该割点便满足条件。

如何保证割点 uu 位于 aabb 之间的路径呢?假设我们是通过 uu 的儿子节点为 vv 判定 uu 为割点,那么,若满足条件

dfn[v]dfn[b] dfn[v] \le dfn[b]

便意味着 uu 位于 aabb 之间。这是因为 dfn[b]dfn[b] 的值不是 00,说明已经搜过点 bb,其值大于等于 dfn[v]dfn[v],说明先访问的 vv,再访问的 bb。所以 bb 一定位于子树 vv