牛可乐和公平点
题号:NC235654
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

牛可乐得到了一张有 n 个点的地图。这 n 个点之间由 n-1 条边连接,从任意一个点出发都可以到达其余点中的任意一个。

牛可乐定义“公平点”是对于给定的点 i 和点 j,“公平点”到点 i 的距离和到点 j 的距离相同,两点之间的距离是两点间最短路径的边数。

牛可乐想请你计算出,对于给定的两个点,有多少公平点呢?

输入描述:

第一行包含一个整数 

之后 n-1 行,每行包含两个整数 ,代表 uv 两点之间存在一条边。

行包含一个整数 ,代表询问次数。

之后 q 行,每行包含两个整数 ,代表一组询问的两个点。

输出描述:

对于每组询问,输出一行一个整数,代表对于给定的两点,“公平点”的数量。
示例1

输入

复制
4
1 2
2 3
2 4
2
1 2
1 3

输出

复制
0
2

说明

对于第一组询问,没有点到 节点1 和节点 2 的距离相等。答案为 0

对于第二组询问,节点 2 到节点 1,3 的距离均为 1,节点 4 到节点 1,3 的距离均为 2。故答案为 2