又是一道黑题,不容易啊。。。
首先,不管年龄的限制,问题即可简化为:给定一个点,求其他所有点到当前点的距离
回想一下树上两点距离公式:,两点距离等于两点深度相加减去lca的深度乘二
点的深度可以一次O(n)的dfs解决,问题转化为求对于一个点u,,字好小啊。。。
回想 [LNOI2014]LCA 中求这东西的套路,我们可以把每一个v到根的路径的tag加一,那么只需要求u到根的路径的权值乘tag就可以了(语文不好请见谅,如果没有看懂可以去看[LNOI2014]LCA题解)
上面那东西很明显的一个树链剖分+线段树即可
现在把年龄的限制加上,怎么办呢?
看标题,还有什么没有用?主席树!
现在求距离不就是有两个限制了吗?此时把怪兽按年龄排序