我有一棵有n个节点和m个查询的树。对于每个查询,他们都要求我从给定节点中查找树的高度(假设他们选择该节点作为根)。
我们将拥有最多10^5
个节点和10^5
个查询。
仅从一个节点作为根获得高度很简单。但是对于这个问题,我没有找到有效的解决方法。
对于每个查询,我必须一次又一次遍历树。需要太多时间。
必须存在某种方式,我可以从任何节点作为根仅遍历一棵树,然后计算每个查询的高度。
那么,有什么解决办法吗?
问题出在这里:
您将获得一棵具有n个顶点和m个查询的树。对于每个查询,在选择顶点R作为根时找到树的高度
第一行包含N,即顶点数。 1 <= n <= 10^5
接下来的N-1行遵循类型U V,表示存在从U到V的路径。0 <= U, V <= n - 1
下一行包含m,即查询数1 <= m <= 10^5
后跟m行,每行包含一个选择为根的顶点R。
输出每个查询的高度。
input
5
0 1
0 2
2 3
3 4
5
0
1
2
3
4
output
3
4
2
3
4