Bafuko 非常喜欢打游戏!她最近正在游玩最新作《Young Bracelet – Light of the Saint Grass》。作为一名资深玩家,她想要探索地图上的每一个角落。
Bafuko 的参考图片 (X @bafuko_seiso)
地图可以表示为一棵拥有 $n$ 个结点的树,结点编号为 $1$ 到 $n$。树上的每条边权重均为 $1$。此外,还有一个特殊的传送门连接两个指定的不同结点 $x$ 和 $y$。该传送门可以使用任意多次,并允许在 $x$ 和 $y$ 之间瞬间传送,且代价为 $0$。
Bafuko 希望通过一次巡回(tour)来访问树中的每个结点至少一次。一次巡回是指一个由相邻结点组成的序列,它始于一个选定的结点,终于一个选定的结点(可能与起点相同),并且访问了树中的每个结点至少一次。她可以自由选择起点和终点。在巡回过程中,如果需要,边和传送门都可以被多次经过。巡回的代价定义为所有经过的边和传送门的使用代价之和,其中重复经过的边会被多次计算。
你的任务是确定这样一次巡回的最小总代价。
输入格式
每个测试文件包含多个测试用例。第一行包含测试用例的数量 $t$。接下来是每个测试用例的描述。
每个测试用例的第一行包含三个整数 $n$、$x$ 和 $y$,分别表示树中的结点数以及由传送门连接的两个结点。
接下来的 $n - 1$ 行,第 $i$ 行包含两个整数 $u_i, v_i$,表示结点 $u_i$ 和 $v_i$ 之间的一条边。
输出格式
对于每个测试用例,在新的一行中输出一个整数,表示访问树中每个结点至少一次的巡回的最小总代价。
数据范围
- $1 \le t \le 10^4$
- $2 \le n \le 5 \times 10^5$
- $1 \le x, y \le n$ 且 $x \neq y$。
- $1 \le u_i, v_i \le n$ 且 $u_i \neq v_i$。
- 保证给定的边构成一棵树。
- 保证所有测试用例中 $n$ 的总和不超过 $5 \times 10^5$。
样例
输入样例 1
3 4 1 3 1 2 2 3 2 4 8 1 3 1 2 2 3 2 4 4 7 7 8 4 5 5 6 8 1 2 1 2 2 3 3 4 4 5 3 6 6 7 7 8
输出样例 1
2 8 7