题目描述
给定一棵 n n n个点的树, Q Q Q个询问,每次询问点 x x x到点 y y y两点之间的距离。
输入输出格式
输入格式:
第一行一个正整数 n n n,表示这棵树有 n n n个节点,其中节点 1 1 1为根节点;
接下来 n − 1 n−1 n−1行,每行两个整数 x x x, y y y,表示 x x x, y y y之间有一条连边; 然后一个整数 Q Q Q,表示有 Q Q Q个询问;
接下来 Q Q Q行,每行两个整数 x x x, y y y表示询问 x x x到 y y y的距离。
输出格式:
输出 Q Q Q行,每行表示每个询问的答案。
输入输出样例
输入样例#1:
6
1 2
1 3
2 4
2 5
3 6
2
2 6
5 6
输出样例#1:
3
4
说明
【数据范围】
对于全部数据, 1 ≤ n , m , Q ≤ 1 0 5 1≤n,m,Q≤10^5 1≤n,m,Q≤105; 1 ≤ x , y ≤ n 1≤x,y≤n 1≤x,y≤n。
算法
我们知道,
D i s ( x , y ) = D e p ( x ) + D e p ( y ) − 2 ∗ D e p ( G r a n d ) Dis(x,y)=Dep(x)+Dep(y)-2*Dep(Grand) Dis(x,y)=Dep(x)+Dep(y)