支配樹學習筆記
阿新 • • 發佈:2019-05-07
沒有 回來 tar 樹邊 學習筆記 sem 定義 關系 祖先
最小的半支配點,矛盾。
沒有施工完,先放上來。
支配樹
求出dfs序。
定義:\(y\)為\(x\)的半支配點,當且僅當存在一條\(y\rightarrow x\)的路徑,且這條路徑掐頭去尾之後都有\(dfn>dfn_x\),且\(y\)為滿足這個條件的\(dfn\)最小的點,記為\(semi_x=y\)。
\(fa_x\)顯然滿足條件,所以有\(dfn_y\le dfn_{fa_x}\)。
定理:\(y\rightarrow x\)的路徑必然經過\(lca(x,y)\)。
感性理解一下就好了qwq
由這個定理,可以得到\(y\)必定為\(x\)的祖先。
(為了寫的方便,下文有的時候半支配點指滿足條件但不是最小的點)
如何求\(semi_x\)?
分情況討論:要麽是\(semi_x\)一步走到了\(x\);要麽是\(semi_x\)先跳到了\(x\)的兄弟節點那裏,然後再亂跳一通跳回來;要麽是\(semi_x\)跳到了\(x\)的子樹內,然後在子樹內晃來晃去,最後跳回來。
第一種
建反圖之後亂搞即可。
第二種
設\(w\)為\(semi_x\rightarrow x\)路徑上的第一個點,那麽就會有\(semi_x=semi_w\)。
證明:\(semi_w\)顯然滿足\(x\)的條件。若\(semi_x<semi_w\),那麽會發現\(semi_x\)滿足\(w\)的條件,於是\(semi_w\)不是\(w\)
所以\(semi_x\ge semi_w\),所以\(semi_x=semi_w\)。
第三種
其實與第二種一模一樣qwq
\(semi_x\)有什麽用?
把非樹邊全都刪掉,加上\((semi_x,x)\)的邊,支配關系不變。
證明?感性理解一下吧qwq
然後這個圖變成了一個DAG,\(O(n\log n)\)亂搞就好了。
支配樹學習筆記