2213. 寻找出口(40分)

在一个迷雾笼罩的村庄中,有一片森林可以看作一棵有 n 个节点的树,根节点为 1。由于森林中充满了迷雾,村庄的居民得到了一些特殊的消息。每份消息中会告知他们有两棵子树是禁止进入的区域。为了安全离开森林,他们向你求助。

他们提出了 q 个形如 "x y" 的询问,表示他们不能进入 xy 的子树区域。由于走的路径越长,他们找到出口的可能性越大,且他们只能走一条不经过重复节点的路径,现在他们想知道对于每组询问,他们能走的最长路径是多少。如果没有可行路径,则输出零。

你刚刚探索了这片森林,决定帮助村庄的居民解决这个问题。

输入

第一行包含两个正整数 nq1 \leqslant n, q \leqslant 100000),分别表示树的节点数和询问次数。
第二行到第 n 行,每行包含两个整数 u, v,表示 uv 之间有一条边连接,边的长度为 1。
接下来 q 行,每行包含两个整数 x, y,表示一组询问,意义如问题描述。

输出

输出 q 行,每行一个整数,表示对于每组询问能走的最长路径长度,见问题描述。

样例

标准输入 复制文本
5 2
1 3
3 2
3 4
2 5
2 4
5 4
标准输出 复制文本
1
2

提示

样例解释

对于询问 1,x = 2y = 4 的子树不能进入,最长路径为 (1, 3),长度为 1。
对于询问 2,x = 5y = 4 的子树不能进入,最长路径为 (1, 3, 2),长度为 2。

数据范围

  • 对于前 20\% 的数据:1 \leqslant n, q \leqslant 100
  • 对于前 50\% 的数据:1 \leqslant n, q \leqslant 2000
  • 对于 100\% 的数据:1 \leqslant n \leqslant 1000001 \leqslant q \leqslant 50000

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 183
通过 10