CF500G New Year Running

题目描述

新年即将在“树岛”到来!顾名思义,这个岛上有 $n$ 个城市,由 $n-1$ 条道路连接,并且任意两座不同的城市之间总存在且仅存在一条路径。对于树岛上的每个人,经过一条道路恰好需要一分钟。 树岛有一个奇怪的新年长跑传统,被称为“极限跑”。这个传统的规则如下: 一名跑者选择两座不同的城市 $a$ 和 $b$。为方便描述,设从城市 $a$ 到城市 $b$ 的最短路径为 $p_{1},p_{2},...,p_{l}$(其中 $p_{1}=a$,$p_{l}=b$)。接下来会发生: 1. 跑者从城市 $a$ 出发。 2. 跑者沿从 $a$ 到 $b$ 的最短路径跑到城市 $b$。 3. 到达城市 $b$ 后,跑者立即转向(不耗时),沿最短路径从 $b$ 返回 $a$。 4. 到达城市 $a$ 后,跑者立即转向(不耗时),再沿最短路径从 $a$ 跑往 $b$。 5. 不断重复第 3 步与第 4 步。 简而言之,跑者的路线可以表示为:![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF500G/025b6a126e2d5bfb81cc888594d1669dfd47cf55.png)![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF500G/87628e4e1ee0d9f1a3eb8258024da9e81bf4f13b.png) 两名跑者 JH 和 JY 为了庆祝新年,决定“极限跑”。JH 选择了城市 $u$ 和 $v$,JY 选择了城市 $x$ 和 $y$。他们决定同时出发,直到第一次在同一城市相遇(在道路上相遇对他们无意义)。在开始跑步前,他们想知道需要跑多久。 JH 和 JY 觉得这个问题太难计算,于是请求你帮忙。

输入格式

第一行一个正整数 $n$($5 \leq n \leq 2\times10^{5}$)——树岛上的城市数量。 接下来 $n-1$ 行描述树岛的道路。第 $i$ 行包含两个用空格分隔的整数 $a_{i}$ 和 $b_{i}$($1 \leq a_{i}, b_{i} \leq n, a_{i} \ne b_{i}$),表示一条连接 $a_{i}$ 和 $b_{i}$ 的道路。 接下来一行一个整数 $t$($1 \leq t \leq 2\times10^{5}$)——测试组数。 接下来的 $t$ 行,每行包含四个用空格分隔的整数 $u_{j}, v_{j}, x_{j}, y_{j}$($1 \leq u_{j}, v_{j}, x_{j}, y_{j} \leq n, u_{j} \ne v_{j}, x_{j} \ne y_{j}$),表示第 $j$ 个测试数据中,JH 选择了 $u_j,v_j$,JY 选择了 $x_j, y_j$。JH 从 $u_j$ 出发,JY 从 $x_j$ 出发。

输出格式

对于每组测试数据,输出一个整数,表示两人第一次在同一城市相遇所需的时间(以分钟为单位)。如果他们永远不会相遇,输出 $-1$。如果他们一开始就相遇,输出 $0$。

说明/提示

样例如图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF500G/3a1cfe368327b674dde36bdc8607c860fa47cdf6.png) 由 ChatGPT 5 翻译