QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 256 MB Total points: 100

#6861. 反恐精英

Statistics

SPY 喜欢有用的算法,而 Markyyz 总是学习无用的算法。尽管他们学习的算法类型不同,但他们都喜欢一款名为《反恐精英》(简称“CS”,与现实中同名的游戏不同)的电脑游戏。这是一款双人竞技游戏。一名玩家扮演恐怖分子(简称“T”),负责安放炸弹。另一名玩家扮演反恐精英(简称“CT”),负责拆除炸弹。

游戏开始时,系统会生成一个带有电路的炸弹。该电路包含 $n$ 个枢纽(编号从 $1$ 到 $n$)和 $m$ 条导线。每条导线连接两个不同的枢纽,任意两个枢纽都可以通过导线直接或间接相连,且任意两个枢纽之间最多只有一条导线直接相连。换句话说,该电路可以看作是一个具有 $n$ 个顶点和 $m$ 条边的无向图,且没有重边或自环。

游戏分为三个阶段: 1. 安放炸弹阶段:T 将收到 $k$ 个编号从 $1$ 到 $k$ 的激活组件。T 需要选择 $k$ 个不同的枢纽 $h_1, h_2, \dots, h_k$,并将第 $i$ 个激活组件放置在第 $h_i$ 个枢纽上。 2. 拆除炸弹阶段:CT 将免费获得一个“有用工具包”,并购买 $q$ 个编号从 $1$ 到 $q$ 的“无用工具包”。一个有用工具包可以移除任意一个枢纽,而一个无用工具包只能按顺序移除带有激活组件的枢纽,这意味着第 $i$ 个无用工具包只能移除第 $h_i$ 个枢纽。一旦一个枢纽被移除,所有直接连接到它的导线都将被切断。 3. 激活炸弹阶段:如果任意两个激活组件通过导线直接或间接相连,炸弹将被激活,T 获胜。否则,炸弹将被拆除,CT 获胜。

例如,上图展示了一个由 19 个枢纽和 27 条导线组成的炸弹电路。T 获得了 6 个激活组件,并将它们放置在枢纽 16, 17, 2, 18, 12, 9 上。CT 可以购买 2 个无用工具包来移除第 16 个和第 17 个枢纽,然后用一个有用工具包移除第 5 个枢纽。

现在 Markyyz 扮演 T,SPY 扮演 CT。Markyyz 已经放置了 $k$ 个激活组件。为了在未来的游戏中节省资金,SPY 想要购买最少数量的无用工具包来拆除炸弹。尽管 SPY 自诩精通有用算法,但他无法在 $O((n + m) \log n)$ 的时间复杂度内找到答案。你能帮他计算出答案(换句话说,CT 要赢得游戏所需的最小 $q$ 值)吗?

输入格式

输入的第一行包含一个整数 $t$ ($1 \le t \le 5000$),表示测试用例的数量。 每个测试用例中: 第一行包含三个整数 $n, m, k$ ($2 \le n, m \le 2 \times 10^5, 2 \le k \le n$),分别表示枢纽的数量、导线的数量和激活组件的数量。 接下来的 $m$ 行,每行包含两个整数 $u, v$ ($1 \le u, v \le n, u \neq v$),表示连接第 $u$ 个枢纽和第 $v$ 个枢纽的一条导线。 下一行包含 $k$ 个不同的整数 $h_1, h_2, \dots, h_k$ ($1 \le h_i \le n$)。第 $i$ 个激活组件设置在第 $h_i$ 个枢纽上。 保证在所有测试用例中 $\sum n, \sum m \le 10^6$。

输出格式

你需要输出一行一个整数,表示 CT 赢得游戏所需的最小 $q$ 值。

样例

输入样例 1

1
19 27 6
1 2
1 3
2 4
3 4
2 5
4 5
5 6
5 8
6 7
6 8
8 7
8 9
7 9
7 10
9 10
5 11
11 12
12 13
13 14
14 12
11 15
11 16
16 17
16 18
17 18
17 19
18 19
16 17 2 18 12 9

输出样例 1

2

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.