Gokix

一言(ヒトコト)

关注我

NOI2018 归程(Kruskal 重构树)

来自SDSC2021Day7笔记

一年前的口胡


Kruskal 重构树具有一些特点:

  1. 点数 \(2n-1\),边数 \(2n-2\)(因此要开 2 倍空间)。

  2. 原图中的节点就对应重构树中的叶子节点。

  3. 最小生成树上两点间的最大权值边在重构树上对应的边点,是该两点在重构树上对应的点的 LCA。

  4. 重构树中,每个子树都对应最小生成树中的一个联通块,该连通块的所有边权都小于等于子树根的点权。

  5. 从某个点开始,只经过边权小于等于某值的边到达的所有点,在重构树上对应的是一颗子树的所有叶子节点。

按深度构建 Kruskal 重构树,不花费代价就可以到达的节点就对应了重构树上的一棵子树。这样问题就转化为一棵子树上所有节点到 1 号节点的距离最小值。

最短路预处理,然后显然那个东西就可以维护到子树的树根上。

询问时倍增找根即可。

posted @ 2022-07-09 21:05  Gokix  阅读(36)  评论(0编辑  收藏  举报