2213. 寻找出口(40分)

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

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

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

输入

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

输出

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

样例

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

提示

样例解释

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

数据范围

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

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