码迷,mamicode.com
首页 > 其他好文 > 详细

支配树

时间:2018-01-24 22:15:03      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:post   遍历   exists   mat   3.2   一点   pat   条件   gpo   

定义 :

支配点(dom) : 从 S 到 之 的 必经点

最近支配点 (idom) : 其他支配点 都 支配 之 的支配点

半支配点 (sdom) : 存在 dfn 绕后路径 / 存在一条边直达 之 的点中, dfn 最小的

考虑有向图的一个生成树 (树边, 下边, 上边, 左边)

性质 :

(1) 从 dfn 序较小的点 \(\to\) dfn 序较大的点, 至少经过一个公共祖先

? prove : 左边, 上边只会继续减少 dfn. 至少得跳出 lca, 然后走 下边 才行

(2) \(idom(x)\to x\)

? prove : 若 ‘必经点‘ \(y\) 不在生成树祖先上, \(S\to x\) 则是不经过 \(y\) 的一种方案

(3) \(sdom(x)\overset{+}\to x\) \(if~x\neq S\)

? prove : \(pre[x]\) 就是满足条件的一个. 然后再根据 性质 (1)

(4) \(idom(x) \to sdom(x)\)

? prove : 否则, \(sdom(x)\leadsto x\) 就是不经过 \(idom(x)\) 的方案

(5) 不存在 \(idom(u)\overset{+}\to idom(w)\overset{+}\to u\to w\)

? prove : 因为 \(idom(u)\)\(idom(w)\) 上, 说明存在方案绕过 \(idom(w)\)\(u\) 的方案,

? 于是就有绕过 \(idom(w)\)\(w\) 的方案.

(6) 若对于 \(\forall u, idom(w)\overset{+}\to u\to w\) :

(6.1) 都有 \(dfn[sdom(u)] \ge dfn[sdom(w)]\) , 那么 \(idom(w) = sdom(w)\)

? prove : 反证不是, 又根据性质 (4), 就有 \(idom(w)\overset{+}\to sdom(w)\) , 根据 sdom 定义, 可知

? 从 \(sdom(w)\) 上方任意一点, 都无法 \(\leadsto sdom(w)\) 下方到 \(w\) 这段路上的任意一点

? 因此必经 \(sdom(w)\)

(6.2) \(\exists u ~~s.t.~sdom(u) \lt sdom(w)\), 找到 \(dfn[sdom(u)]\) 最小的 \(u\), 有 \(idom(w) = idom(u)\)

? prove : 反证不是, 又根据性质 (5), (4), 必有 \(idom(w)\overset{+}\to idom(u)\).

? 那么假如要在 \(idom(u)\) 之上绕过 \(idom(u)\) 前往 \(w\)

? case 1 : 绕到 \(u\) 上方, 这与 \(idom(u)\) 矛盾
case 2 : 绕到 \(u\) 下方, 设绕到点 \(v\) , 那么 \(sdom(v)\le sdom(u)\) , 与假设矛盾

(7) \(sdom(x)\) 是上方直达的 或 \(u\to v\to x且path(u,v)\ge dfn[x]\)\(sdom(u)\) 最小的

实现 :

(1) 先 dfs 出 dfn 序

(2) 初始化 \(sdom[x]=x\)

(3) dfn 倒序遍历

(3.1) 定义 \(eval(x)\) 为当前 \(x\) 祖先中 \(dfn[sdom(u)]\) 最小的 \(u\)

(3.2) 遍历所有可直达 \(x\) 的点, 从它们的 \(eval\) 中找到最小的, 即为当前点的 \(sdom\)

? 注意 : 枚举的点必须得S可达

(3.3) 把当前点插入 \(sdom\)\(blanket\)

(3.4) 遍历并清空当前点父亲的 \(blanket\) , (此时 \(eval\) 就是路径最小值)

? 若满足性质 \((6.1)\) 那么设 \(idom(x) = sdom(x)\) , 否则暂时设 \(idom(x) = eval(x)\)

? 注意 : 比较上下时, 不要漏了dfn而直接比编号

(3.5) 加入这个点与其父亲的连边.

(4) dfn 正序遍历, 对于 \(idom(x) \neq sdom(x)\) 的点, 有 \(idom(x) = idom(idom(x))\)

支配树

标签:post   遍历   exists   mat   3.2   一点   pat   条件   gpo   

原文地址:https://www.cnblogs.com/acha/p/8343248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!