歌名 - 歌手
0:00

    支配树小记

    前言

    话说本月初看到了一道题【51nod 2004】终结之时
    是支配树裸题,所以我就顺便去学习支配树
    我现在还是不太懂,只能讲讲构造方法

    构造方法

    我们先建出dfn树
    定义

    sdom[x]表示x的半必经点,指的是从sdom[x]出发,存在一条路径, 路径上的点(不包括x和sdom[x])的dfn>dfn[x],的dfn最小的点。
    idom[x]表示x的最近必经点,即支配树上的x的父亲。
    

    考虑如何求sdom,
    按照dfn从大到小枚举y,
    对于一条边(x,y),更新sdom[y]

    dfn[x]<dfn[y]  sdom[y]对dfn[x]取min,因为x可以直接到y,显然其路径上不会有点dfn小于dfn[y]的点
    dfn[x]>dfn[y]  sdom[y]对sdom[z]取min,z为y->lca(x,y)的路径节点,用个类似并查集的东西来维护
    

    最后就可以通过sdom来求出idom

    当sdom[x]==sdom[y],idom[x]=sdom[y]
    否则 idom[x]=idom[y]
    
    posted @ 2018-09-26 21:40  无尽的蓝黄  阅读(257)  评论(0编辑  收藏  举报