Skip to content

操作序列分块 ​

给定一棵树,初始1号点颜色为红色,其他为蓝色,有两种操作

  • 1 v将vv变成红色
  • 2 v询问与最近的红点的距离

分块大小为BB,那么答案分为前面的块的贡献和当前块的贡献

维护一个数组ansans表示前面的块的贡献,每过一个块重新bfs更新,总复杂度为nBn\frac{n}{B}n

当前块内最多有BB个红点,暴力用lca求距离更新,复杂度为BB

B=nB=\sqrt n,总复杂度O(nn)O(n \sqrt n)