QOJ.ac

QOJ

Limite de temps : 4 s Limite de mémoire : 512 MB Points totaux : 100

#16301. 反间谍活动

Statistiques

在 Byteotia 有 $n$ 座城市,编号从 $1$ 到 $n$,以及 $n-1$ 条道路,每条道路直接连接两座城市。从任意一座城市出发,都可以通过唯一的一条路径到达其他所有城市,且不会经过重复的路径。

你负责 Byteotia 的反间谍工作。你刚刚收到消息,敌对势力 Bitotia 的间谍已经渗透到了一些城市!你知道 Bitotia 的间谍总是成对行动。当一对间谍中的一人发现有用的信息时,他们会试图到达另一名间谍所在的城市以分享发现。对于 $q$ 对间谍中的每一对,你都知道他们目前分别位于哪两座城市。

你的任务是确保没有任何一对间谍能够会面。为了实现这一目标,你可以宣布对任意一组城市进行隔离。禁止进入、经过或离开处于隔离状态的城市。

如果存在一个城市序列 $x_1, x_2, \dots, x_k$,其中没有任何城市处于隔离状态,且 $x_1$ 是其中一名间谍所在的城市,$x_k$ 是另一名间谍所在的城市,并且对于每个 $1 \le i \le k-1$,城市 $x_i$ 和 $x_{i+1}$ 之间有道路直接相连,那么这一对间谍就可以会面。

当然,你不想让整个国家陷入瘫痪,因此你希望尽可能少地隔离城市。你的任务是计算为了防止每一对间谍会面,必须隔离的最少城市数量。此外,你还必须提供任意一组满足该数量的、必须隔离的城市列表。

输入格式

输入的第一行包含两个整数 $n$ 和 $q$ ($2 \le n \le 5 \cdot 10^5$, $1 \le q \le 5 \cdot 10^5$),分别表示 Byteotia 的城市数量和间谍对的数量。

接下来的 $n-1$ 行包含道路的描述。第 $i$ 行(对于 $1 \le i \le n-1$)包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i, b_i \le n$, $a_i \neq b_i$),表示城市 $a_i$ 和 $b_i$ 之间有道路直接相连。

接下来的 $q$ 行包含间谍对的描述。第 $i$ 行(对于 $1 \le i \le q$)包含两个整数 $c_i$ 和 $d_i$ ($1 \le c_i, d_i \le n$, $c_i \neq d_i$),表示第 $i$ 对间谍所在的城市(一人在城市 $c_i$,另一人在城市 $d_i$)。多名间谍(来自不同对)可能位于同一座城市。

输出格式

输出的第一行应包含一个整数 $s$,表示为了防止每一对间谍会面,必须隔离的最少城市数量。第二行应包含 $s$ 个整数,表示为了实现这一目标必须隔离的城市。

样例

输入 1

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

输出 1

2
2 3

说明

图中有三对间谍,分别用字母 $A$、$B$ 和 $C$ 表示。如果城市 $2$ 和 $3$(用圆圈标记)被隔离,则没有任何一对间谍可以在不经过这些城市的情况下会面。其他有效的隔离城市列表还包括,例如,$1$ 和 $3$,或者 $1$ 和 $7$。

子任务

子任务 数据范围 分值
1 $n, q \le 20$ 9
2 $q \le 2$ 11
3 连接每一对间谍的路径最多与其他一条路径相交 17
4 $a_i = i, b_i = i + 1$ 对于 $1 \le i \le n - 1$ 12
5 $a_i = i + 1, b_i = \lfloor \frac{i+1}{2} \rfloor$ 对于 $1 \le i \le n - 1$ 23
6 无附加限制 21

如果你的答案仅第一行正确,你将获得该测试点 80% 的分数。你不需要输出第二行即可获得这些分数。

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.