Note -「Kruskal Rebuild Tree」

cirnovsky /

§ 0x01 正题

照抄 PDF:

在普通的kruskal中,如果一条边连接了在2个不同集合中的点的话,我们将合并这2个点所在集合。而在kruskal重构树中,如果一条边连接了在2个不同集合中的点,我们将新建一个节点出来,并用这个新节点作为一个中转连接这2个集合。

性质:

  1. 是一个二叉树
  2. 一个节点能走到的节点一定在它的子树中
  3. 如果是按最小生成树建立的 话是一个大根堆
  4. 求 u , v 之间路径上的最大边权 -> 求重构树上 u , v 两个点的LCA。
  5. 重构树中代表原树中的点的节点全是叶子节点,其余节点都代表了一条边的边权。 kruskal重构树,其实本质上就是个可持久化的kruskal。
  6. 只保留边权小于等于 x 的边形成的树 -> 重构树上点权小于等于 x 的点的子树。

有空再补。