树的重心

发布时间 2023-10-09 14:43:27作者: wscqwq

模板1:树的重心

模板2:树的重心

1求重心,2求重心删除后的最大连通块。

基本方法

对于每个点,我们计算一下它分离后的最大连通块。

对于它的子节点,就是 \(\max sz[son]\),对于父节点,就是 \(n-sz[x]\)

然后统计一下最小值,最后循环一遍找出即可。

特殊方法

对于一个点,如果它有一个子树 \(sz>n/2\)(以下均为向下取整),那么重心一定在这个子节点中,重复这个过程,这是利用重心的性质:分离后任意一个连通块大小 \(\le n/2\)。最终,要找到第二个重心,只需要枚举它的相邻边,找哪个点可以和它把整棵树划分成 \(n/2,n/2\)(n为偶数),这也是重心的性质。

  1. 重心分离得到的点满足 \(\min mx_{sz}\),且 \(mx_{sz}\le n/2\)
  2. 重心要么只有一个,要么两个;两个时,两个重心将树划分成 \(n/2,n/2\)(n为偶数)。