5009.纠缠点对

时间限制:15s 内存限制:512MB

给定两棵由 $n$ 个顶点构成的无根树 $T_1$ 和 $T_2$ 。

定义点对 $(u,v)$ 和 $(x,y)$ 相互纠缠,当且仅当,在 $T_1$ 上和 $T_2$ 上,从 $u$ 到 $v$ 和从 $x$ 到 $y$ 的最短路径都有至少一个交点。

现给定 $m$ 对点对 $(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)$,计算:有多少对点对相互纠缠。即,存在多少对 $i \lt j$,使得点对 $(x_i,y_i)$ 和点对 $(x_j,y_j)$ 相互纠缠。

输入格式(从终端/标准输入读取)

第一行一个整数 $t(1≤t≤10)$,表示测试数据的组数。

对于每组数据:

第一行两个整数 $n(1≤n≤10^5 )$ 和 $m(1≤m≤10^5 )$。

接下来 $n−1$ 行,每行两个整数 $u,v$,表示 $T_1$ 上的一条边。

接下来 $n−1$ 行,每行两个整数 $u,v$,表示 $T_2$ 上的一条边。

接下来 $m$ 行,每行两个整数 $x,$y$,表示给定的一个点对。

输出格式(输出至终端/标准输出)

对每组数据输出一行一个整数,表示所求答案。

输入样例

复制
2
5 3
1 2
2 3
3 4
4 5
1 2
1 3
2 4
2 5
1 5
2 3
4 5
4 2
2 1
3 2
4 3
2 1
3 1
4 3
1 4
1 1
 \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n
 · \n

输出样例

复制
2
1
 \n
 \n
来源: 2024“钉耙编程”中国大学生算法设计超级联赛(7)

提交题解

Please login first.

© 2025 FAQs