洛咕
题意:给你一片森林,每次询问一个点与多少个点拥有共同的\(K\)级祖先.\(n,m<=100000.\)
分析:先不管森林不森林的(森林就当做多棵独立的树来处理就好了,反正产生的贡献相互不影响),在一棵树上,我们要维护每个点有多少个点的深度与之相同,空间是开不下的.所以我们需要稍微转化一下,维护每个点的深度为\(K\)的儿子有多少个.所以我们先通过\(LCA\)找到节点\(x\)的\(K\)级祖先\(y\),然后把\((y,dep[u])\)当做一组询问,表示要查询\(y\)的子树中深度为\(dep[u]\)的儿子的数量.
#include
#include
#include
#include
#include
#include
#include