QOJ.ac

QOJ

Time Limit: 10 s Memory Limit: 512 MB Total points: 100

#857. Dystans społeczny

Statistics

O studentach można powiedzieć dwie rzeczy: nienawidzą pracować więcej niż to konieczne i uwielbiają zachowywać dystans od innych. To pierwsze jest prawdopodobnie powodem, dla którego wydział ma strukturę drzewa (budowanie korytarza między dwoma pośrednio połączonymi pokojami byłoby stratą czasu); to drugie sprawia, że świetnie odnajdują się podczas trwającej pandemii. Teraz dystans społeczny nie jest już luksusem – to norma!

Jednak budynki o strukturze drzewa i zachowywanie dystansu od innych nie zawsze idą w parze. Obecnie w niektórych pokojach przebywają studenci i ze względu na politykę dystansowania w każdym pokoju znajduje się co najwyżej jeden student. Co więcej, żadnych dwóch studentów nie przebywa w pokojach bezpośrednio połączonych korytarzem.

Konkurs ICPC wkrótce się rozpoczyna, a studenci spieszą się, by zająć miejsca przy komputerach rozrzuconych po wydziale. Jest $k$ komputerów – tyle samo, ilu jest studentów – umieszczonych w niektórych pokojach; co więcej, aby umożliwić zachowanie dystansu, żadne dwa komputery nie znajdują się w tym samym pokoju, ani w dwóch bezpośrednio połączonych pokojach. Studenci mogą przypisać się do komputerów dowolnie, ale muszą przez cały czas zachowywać dystans społeczny – więc dotarcie tam, gdzie powinni być, może być trudne, jeśli nie niemożliwe.

Jesteś bezwzględnym organizatorem ICPC i twórcą ostatecznego, morderczego zestawu zadań. Obserwując gorączkowo biegających studentów, uświadamiasz sobie straszną prawdę: jeśli studenci nie dotrą do swoich pokoi na czas, nie będą mogli wziąć udziału w konkursie, a tym samym cała ciężka praca nad przygotowaniem nierozwiązywalnych zadań pójdzie na marne! Z pewnością nie możesz do tego dopuścić.

Mając dane obecne pozycje studentów oraz pozycje komputerów, zaprojektuj sekwencję operacji, która przeniesie każdego studenta do pokoju z komputerem. Każda taka operacja powinna przenieść studenta do sąsiedniego pokoju; po każdej operacji żadnych dwóch studentów nie może znajdować się w tym samym pokoju ani w dwóch sąsiednich pokojach. Pozostały czas przed rozpoczęciem konkursu pozwala na wykonanie co najwyżej $4n^2$ ruchów, gdzie $n$ to liczba pokoi. Może się okazać, że Twoje zadanie jest niemożliwe, ale jest tylko jeden sposób, aby się o tym przekonać...

Wejście

Pierwsza linia wejścia zawiera liczbę zestawów danych $z$ ($1 \le z \le 100\,000$). Następnie następują opisy zestawów danych.

Pierwsza linia zestawu danych zawiera pojedynczą liczbę całkowitą $n$ ($2 \le n \le 2\,000$) – liczbę pokoi na wydziale.

Kolejne $n - 1$ linii zawiera dwie liczby całkowite $u_i, v_i$ ($1 \le u_i \neq v_i \le n$) – dwa pokoje połączone korytarzem. Gwarantuje się, że opisane korytarze tworzą drzewo (graf spójny bez cykli).

Następna linia zawiera pojedynczą liczbę całkowitą $k$ ($1 \le k < n$) – liczbę studentów (i komputerów).

Następna linia zawiera liczby całkowite $s_1, \dots, s_k$ ($1 \le s_1 < s_2 < \dots < s_k \le n$) – początkowe lokalizacje studentów.

Następna linia zawiera liczby całkowite $c_1, \dots, c_k$ w podobnym formacie, oznaczające pokoje z komputerami.

Gwarantuje się, że istnieje co najmniej jeden student znajdujący się w pokoju bez komputera.

Suma $n^2$ dla wszystkich zestawów danych nie przekracza $4 \cdot 10^7$.

Wyjście

Dla każdego zestawu danych wypisz „YES” (bez cudzysłowów), jeśli możliwe jest przeniesienie studentów do pokoi z komputerami przy zachowaniu dystansu społecznego, w przeciwnym razie wypisz „NO”. W przypadku pozytywnym, w kolejnych liniach wypisz dowolne poprawne rozwiązanie. Opis rozwiązania powinien zaczynać się od pojedynczej liczby całkowitej $m$ ($1 \le m \le 4n^2$) oznaczającej liczbę ruchów. Następnie powinno nastąpić $m$ linii, z których każda opisuje pojedynczy ruch za pomocą dwóch liczb całkowitych $a_i, b_i$ ($1 \le a_i \neq b_i \le n$), co oznacza, że student, który obecnie znajduje się w pokoju $a_i$, powinien przenieść się do pokoju $b_i$, który jest połączony z $a_i$ korytarzem.

Nie musisz minimalizować długości rozwiązania.

Przykład

Wejście 1

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

Wyjście 1

YES
4
1 3
4 2
2 5
3 1
NO

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#538Editorial Open集训队作业 解题报告 by 李秉霈Qingyu2026-01-02 21:54:26 Download
#184EditorialOpen题解jiangly2025-12-12 23:58:16View

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.