QOJ.ac

QOJ

実行時間制限: 4 s メモリ制限: 512 MB 満点: 100

#16301. 防諜

統計

Byteotiaには $n$ 個の都市があり、それぞれ $1$ から $n$ までの番号が付けられています。また、$n-1$ 本の道路があり、各道路は2つの都市を直接結んでいます。どの都市からどの都市へも、後戻りすることなく唯一の経路で到達可能です。

あなたはByteotiaの防諜機関の責任者です。敵対するBitotiaのスパイがいくつかの都市に潜入したという情報が入りました!スパイは常にペアで行動します。ペアの一方のスパイが有益な情報を発見すると、もう一方のスパイがいる都市へ移動して情報を共有しようとします。$q$ 組のスパイペアそれぞれについて、現在どの都市にいるかが分かっています。

あなたの任務は、どのスパイペアも出会うことができないようにすることです。これを達成するために、任意の都市の集合を隔離対象として宣言できます。隔離された都市には、立ち入ること、通過すること、またはそこから出ることは禁止されます。

スパイのペアが出会えるのは、隔離されていない都市の列 $x_1, x_2, \dots, x_k$ が存在し、$x_1$ が一方のスパイのいる都市、$x_k$ がもう一方のスパイのいる都市であり、すべての $1 \le i \le k-1$ について都市 $x_i$ と $x_{i+1}$ が道路で直接結ばれている場合のみです。

当然ながら、国全体を麻痺させることは望ましくないため、隔離する都市の数を最小限に抑えたいと考えています。すべてのスパイペアが出会うのを防ぐために隔離しなければならない都市の最小数を計算してください。さらに、その条件を満たす隔離都市のリストを一つ提示してください。

入力

入力の最初の行には、Byteotiaの都市数 $n$ とスパイペアの数 $q$ ($2 \le n \le 5 \cdot 10^5$, $1 \le q \le 5 \cdot 10^5$) が含まれます。

続く $n-1$ 行には道路の記述が含まれます。$i$ 番目の行 ($1 \le i \le n-1$) には2つの整数 $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$) には2つの整数 $c_i$ と $d_i$ ($1 \le c_i, d_i \le n$, $c_i \neq d_i$) が含まれ、これは $i$ 番目のスパイペアが都市 $c_i$ と $d_i$ にいることを表します(一方が $c_i$、もう一方が $d_i$ にいます)。複数のスパイ(異なるペアのスパイ)が同じ都市にいる場合もあります。

出力

出力の最初の行には、すべてのスパイペアが出会うのを防ぐために隔離しなければならない都市の最小数 $s$ を出力してください。2行目には、これを達成するために隔離すべき都市を表す $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

注記

図に示すように、3組のスパイペア $A, B, C$ が存在します。都市 $2$ と $3$(円で囲まれた都市)を隔離すれば、どのスパイペアもこれらの都市を訪れずに出会うことはできません。隔離する都市の他の有効な組み合わせとして、例えば $1$ と $3$、あるいは $1$ と $7$ などがあります。

小課題

小課題 制約 配点
1 $n, q \le 20$ 9
2 $q \le 2$ 11
3 各スパイペアを結ぶ経路は、他の高々1つの経路としか交差しない 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

回答の1行目のみが正しい場合、そのテストケースの配点の80%を獲得できます。この点数を獲得するために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.