NOI2018 归程(Kruskal 重构树)
来自SDSC2021Day7笔记
一年前的口胡
Kruskal 重构树具有一些特点:
-
点数 \(2n-1\),边数 \(2n-2\)(因此要开 2 倍空间)。
-
原图中的节点就对应重构树中的叶子节点。
-
最小生成树上两点间的最大权值边在重构树上对应的边点,是该两点在重构树上对应的点的 LCA。
-
重构树中,每个子树都对应最小生成树中的一个联通块,该连通块的所有边权都小于等于子树根的点权。
-
从某个点开始,只经过边权小于等于某值的边到达的所有点,在重构树上对应的是一颗子树的所有叶子节点。
按深度构建 Kruskal 重构树,不花费代价就可以到达的节点就对应了重构树上的一棵子树。这样问题就转化为一棵子树上所有节点到 1 号节点的距离最小值。
最短路预处理,然后显然那个东西就可以维护到子树的树根上。
询问时倍增找根即可。