智乃的点分树(模板)
题号:NC236189
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 1024 M,其他语言2048 M
64bit IO Format: %lld

题目描述

给定一颗大小为N的无根树,节点编号从1N,定义树上两点间的距离dis(u,v)为从uv的唯一最短路径上边的数目。
特别的,我们认为一个节点距离它自身的距离为0,即
定义无根树上的点集

现在智乃酱要进行m次查询,每次查询给定两个参数r,d,请你告诉智乃酱集合U(r,d)的尺寸是多少,智乃酱要求你使用点分树解决本题,所以对于每次的查询参数r将会通过强制在线的方式给出。

输入描述:

第一行是两个整数表示节点数以查询的次数。
接下来输入n-1行,每行两个正整数表示树的一条边。
接下来m行,每行两个整数,表示强制在线参数r'以及距离d

真正的查询参数r由下列公式求得:
其中last表示上一次查询的答案,并且在一开始last的值为0

输出描述:

输出m行,对于每个查询,输出答案。
示例1

输入

复制
6 3
1 3
2 3
3 4
3 5
3 6
1 0
1 1
1 1

输出

复制
1
6
2

说明

解密后的3个查询分别为:
2 0
3 1
2 1