QOJ.ac

QOJ

時間限制: 3 s 記憶體限制: 1024 MB 總分: 100

#6102. 树上查询

统计

给定一棵树,其顶点标号为 $1, 2, \dots, N$。

对于顶点的一个子集 $S \subseteq \{1, 2, \dots, N\}$,如果存在一条仅经过 $S$ 中顶点的路径,则称两个顶点 $(u, v)$ 在 $S$ 下是连通的。注意,这包括路径的端点,因此必须满足 $u, v \in S$。

例如,考虑以下树和集合 $S = \{1, 2, 3, 4, 5, 6\}$。

在这种情况下,$(1, 2)$、$(3, 5)$ 和 $(4, 6)$ 在 $S$ 下是连通的,而 $(1, 6)$ 和 $(2, 7)$ 在 $S$ 下不连通。

令 $strength(S)$ 为满足 $u \neq v$ 且 $(u, v)$ 在 $S$ 下连通的顶点对 $(u, v)$ 的数量。给定 $Q$ 次查询,每次查询包含一个集合 $S$。对于每次查询,你需要计算 $strength(S)$ 的值。

输入格式

第一行包含一个整数 $N$,表示顶点数量 ($2 \le N \le 250\,000$)。

接下来的 $N - 1$ 行,每行包含两个空格分隔的整数 $a$ 和 $b$,表示由边连接的顶点 ($1 \le a, b \le N$)。这些边构成了一棵树。

下一行包含一个整数 $Q$,表示查询数量 ($1 \le Q \le 100\,000$)。

接下来的 $Q$ 行,每行包含一个查询,由空格分隔的整数表示。查询以一个整数 $K$ 开头,表示集合的大小 ($1 \le K \le N$)。随后是 $K$ 个 $1$ 到 $N$ 之间互不相同的整数,表示集合 $S$ 中的顶点。

每个测试用例中 $K$ 的总和最多为 $1\,000\,000$。

输出格式

对于每次查询,输出一行,包含如上定义的整数 $strength(S)$。

样例

输入 1

7
1 2
1 3
1 5
2 7
4 6
4 7
6
1 1
2 1 2
4 1 2 3 4
5 1 2 4 6 7
6 1 2 3 4 5 6
7 1 2 3 4 5 6 7

输出 1

0
1
3
10
7
21

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.