小橙交换水果
题号:NC312241
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

\hspace{15pt}有一棵 n 个节点的树,节点编号为 1n。树上有两个水果,初始时分别位于节点 u 和节点 vu\neq v)。每次操作,小橙可以选择一个水果,将其从当前节点移动到任意一个没有水果的相邻节点(任意时刻同一个节点不能有两个水果)。
\hspace{15pt}小橙希望通过若干次操作,将两个水果的位置交换:原来在节点 u 的水果最终位于节点 v,原来在节点 v 的水果最终位于节点 u
\hspace{15pt}现在有 q 次询问,每次询问给出两个整数 uv,表示初始时两个水果的位置。对于每次询问,输出完成交换所需的最少操作次数,如果无法完成交换,输出 -1

输入描述:

\hspace{15pt}第一行输入两个整数 n,q\left(2\leq n\leq 2\times 10^5;\,1\leq q\leq 2\times 10^5\right),分别表示树上节点个数和询问的次数。
\hspace{15pt}此后 n-1 行,第 i 行输入两个整数 x_i,y_i\left(1\leq x_i,y_i\leq n;\,x_i\neq y_i\right),表示第 i 条树边连接节点 x_iy_i
\hspace{15pt}此后 q 行,第 i 行输入两个整数 u_i,v_i\left(1\leq u_i,v_i\leq n;\,u_i\neq v_i\right),表示第 i 次询问两个水果的节点编号。

输出描述:

\hspace{15pt}对于每一次询问,新起一行输出一个整数,表示完成交换的最少操作次数,如果无法完成交换,输出 -1
示例1

输入

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

输出

复制
6
6
示例2

输入

复制
2 1
1 2
1 2

输出

复制
-1

备注:

\hspace{15pt}在几乎全部的情况下,PyPy 的运行速度优于 Python,我们建议您选择对应版本的 PyPy 进行提交、而不是 Python。