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