题意: 给定一棵树,初始时(1)号节点是红色的,要求支持两个询问:
题解: 对询问分块,假设块大小为(B). 每完成一个块后,用多源BFS更新每个节点离它最近的红色节点距离,复杂度为(O(dfrac{nm}B)). 对每个操作(2),遍历块内所有在其之前的(1)操作对应结点,使用树上倍增求距离,复杂度为(O(Bnlog n)). 由均值不等式可得复杂度为(O(nsqrt{mlog n})). 代码