QOJ.ac

QOJ

時間限制: 4 s 記憶體限制: 512 MB 總分: 100

#16301. Kontrwywiad

统计

W Bajtocji znajduje się $n$ miast, ponumerowanych od $1$ do $n$, oraz $n-1$ dróg, z których każda łączy bezpośrednio dwa miasta. Z każdego miasta da się dojechać do każdego innego na dokładnie jeden sposób bez zawracania.

Zarządzasz bajtockim kontrwywiadem. Właśnie dotarła do Ciebie informacja, że do niektórych miast przedostali się szpiedzy wrogiej Bitocji! Wiesz, że bitoccy szpiedzy zawsze działają w parach. Kiedy jeden szpieg z nich odkryje przydatną informację, to spróbuje przedostać się do miasta, w którym znajduje się drugi, aby podzielić się znaleziskiem. Dla każdej z $q$ par szpiegów wiesz dokładnie, w których miastach znajdują się szpiedzy z tej pary.

Twoim zadaniem jest zagwarantowanie, aby żadna para szpiegów nie mogła się spotkać. Aby tego dokonać, możesz ogłosić kwarantannę w dowolnym zbiorze miast. Nie można wjeżdżać do, przejeżdżać przez, ani wyjeżdżać z miasta objętego kwarantanną.

Szpiedzy tworzący parę mogą spotkać się wtedy i tylko wtedy, gdy istnieje ciąg miast $x_1, x_2, \dots, x_k$, z których żadne nie zostało objęte kwarantanną, przy czym $x_1$ jest miastem, w którym znajduje się jeden szpieg, $x_k$ jest miastem, w którym znajduje się drugi szpieg, a ponadto, dla każdego $1 \le i \le k-1$, miasta $x_i$ oraz $x_{i+1}$ są bezpośrednio połączone drogą.

Oczywiście nie chcesz sparaliżować całego państwa, dlatego zależy Ci na objęciu kwarantanną możliwie niewielu miast. Twoim zadaniem jest obliczyć, jaką najmniejszą liczbę miast należy objąć kwarantanną, aby uniemożliwić spotkanie się każdej parze szpiegów. Ponadto należy podać dowolną taką najkrótszą listę miast, które należy objąć kwarantanną, aby to osiągnąć.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby całkowite $n$ oraz $q$ ($2 \le n \le 5 \cdot 10^5$, $1 \le q \le 5 \cdot 10^5$), oznaczające odpowiednio liczbę miast w Bajtocji oraz liczbę par szpiegów.

W kolejnych $n-1$ wierszach znajduje się opis dróg. W $i$-tym z nich (dla $1 \le i \le n-1$) znajdują się dwie liczby całkowite $a_i$ oraz $b_i$ ($1 \le a_i, b_i \le n$, $a_i \neq b_i$) oznaczające, że miasta $a_i$ oraz $b_i$ są bezpośrednio połączone drogą.

W kolejnych $q$ wierszach znajduje się opis par szpiegów. W $i$-tym z nich (dla $1 \le i \le q$) znajdują się dwie liczby całkowite $c_i$ oraz $d_i$ ($1 \le c_i, d_i \le n$, $c_i \neq d_i$), oznaczające miasta, w których znajduje się $i$-ta para szpiegów (jeden znajduje się w mieście $c_i$, a drugi w mieście $d_i$). W jednym mieście może być wielu szpiegów (z różnych par).

Wyjście

W pierwszym wierszu wyjścia należy wypisać jedną liczbę całkowitą $s$, oznaczającą najmniejszą liczbę miast, które należy objąć kwarantanną, aby uniemożliwić spotkanie się każdej parze szpiegów. W drugim wierszu należy podać $s$ liczb całkowitych oznaczających miasta, które należy objąć kwarantanną, aby to osiągnąć.

Przykład

Wejście 1

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

Wyjście 1

2
2 3

Uwagi

Są trzy pary szpiegów, oznaczone na rysunku literami $A$, $B$ oraz $C$. Jeśli objąć kwarantanną miasta $2$ i $3$ (oznaczone kółkami), żadna para szpiegów nie będzie mogła spotkać się bez odwiedzenia któregoś z tych miast. Innymi poprawnymi listami miast do objęcia kwarantanną są np. $1$ i $3$ oraz $1$ i $7$.

Podzadania

Podzadanie Ograniczenia Punkty
1 $n, q \le 20$ 9
2 $q \le 2$ 11
3 każda ścieżka łącząca parę szpiegów przecina się z co najwyżej jedną inną ścieżką 17
4 $a_i = i, b_i = i + 1$ dla $1 \le i \le n - 1$ 12
5 $a_i = i + 1, b_i = \lfloor \frac{i+1}{2} \rfloor$ dla $1 \le i \le n - 1$ 23
6 brak dodatkowych ograniczeń 21

Jeżeli tylko pierwszy wiersz Twojej odpowiedzi będzie poprawny, Twoje rozwiązanie dostanie 80% punktów za dany test. Nie musisz wypisywać drugiego wiersza, żeby otrzymać te punkty.

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.