#P16005. [ICPC 2020 NAC] Rooted Subtrees

[ICPC 2020 NAC] Rooted Subtrees

题目描述

一棵 树 是一个包含 nn 个节点和 n−1n-1 条边的连通无环无向图,任意两个节点之间有且仅有一条简单路径。一棵 有根树 是指选定一个特定节点作为根的树。

设 TT 是一棵树,TrT_r 表示以节点 rr 为根的 TT。在 TrT_r 中,节点 uu 的 子树 是指所有满足“从根 rr 到 vv 的路径包含 uu(包含 uu 本身)”的节点 vv 构成的集合。在本问题中,我们将以 rr 为根的树中,节点 uu 的子树节点集记作 Tr(u)T_r(u)。

你需要回答 qq 个询问。每个询问给出两个(可能相同)节点 rr 和 pp。一个集合 SS 被称为 可获得的,当且仅当它可以表示为以 rr 为根的树中的某个子树与以 pp 为根的树中的某个子树的交集。形式化地说,集合 SS 是可获得的,当且仅当存在节点 uu 和 vv,使得 S=Tr(u)∩Tp(v)S = T_r(u) \cap T_p(v)。

对于给定的两个根,请统计不同的非空可获得集合的数量。两个集合被认为是不同的,当且仅当存在至少一个元素属于其中一个而不属于另一个。

输入格式

第一行包含两个空格分隔的整数 nn 和 qq(1≤n,q≤2⋅1051 \le n, q \le 2 \cdot 10^5),分别表示树中节点的数量以及需要回答的询问个数。节点编号从 11 到 nn。

接下来的 n−1n-1 行,每行包含两个空格分隔的整数 uu 和 vv(1≤u,v≤n1 \le u, v \le n,u≠vu \ne v),表示节点 uu 和 vv 之间有一条无向边。保证这些边构成一棵合法的树。

接下来的 qq 行,每行包含两个空格分隔的整数 rr 和 pp(1≤r,p≤n1 \le r, p \le n),表示当前询问的两个根节点。

输出格式

对于每个询问,输出一行一个整数,表示通过上述过程可以生成的不同可获得集合的数量。

5 2
1 2
2 3
2 4
4 5
1 3
4 5

8
6

提示

样例解释

第一棵树的不同根化形式如下:

:::align{center} :::

考虑以 11 和 33 为根的情况,可获得的 8 个集合为:

  1. {1}\{1\},取 u=1,v=1u = 1, v = 1;
  2. {1,2,4,5}\{1, 2, 4, 5\},取 u=1,v=2u = 1, v = 2;
  3. {1,2,3,4,5}\{1, 2, 3, 4, 5\},取 u=1,v=3u = 1, v = 3;
  4. {2,3,4,5}\{2, 3, 4, 5\},取 u=2,v=3u = 2, v = 3;
  5. {2,4,5}\{2, 4, 5\},取 u=2,v=2u = 2, v = 2;
  6. {3}\{3\},取 u=3,v=3u = 3, v = 3;
  7. {4,5}\{4, 5\},取 u=2,v=4u = 2, v = 4;
  8. {5}\{5\},取 u=5,v=5u = 5, v = 5。

若以 44 和 55 为根,则只有 6 个可获得集合:

  1. {1}\{1\},取 u=1,v=1u = 1, v = 1;
  2. {1,2,3}\{1, 2, 3\},取 u=2,v=4u = 2, v = 4;
  3. {1,2,3,4}\{1, 2, 3, 4\},取 u=4,v=4u = 4, v = 4;
  4. {1,2,3,4,5}\{1, 2, 3, 4, 5\},取 u=4,v=5u = 4, v = 5;
  5. {3}\{3\},取 u=3,v=2u = 3, v = 2;
  6. {5}\{5\},取 u=5,v=5u = 5, v = 5。

对于其中某些集合,可能存在多种不同的 (u,v)(u, v) 选择方式得到相同的集合。

翻译由 DeepSeek V3.2 完成