QOJ.ac

QOJ

时间限制: 10 s 内存限制: 512 MB 总分: 100

#857. 社交距離

统计

關於學生,有兩件事值得一提:他們討厭做不必要的工作,並且喜歡與他人保持距離。前者大概就是為什麼系館會形成一棵樹(在兩個間接相連的房間之間建造走廊會是浪費時間);後者則是為什麼他們在當前的疫情下反而過得更好。現在,社交距離不再是一種奢侈,而是常態!

然而,樹狀結構的建築與保持社交距離並不完全相容。目前,有些房間裡有學生,且由於社交距離政策,每個房間最多只能有一名學生。此外,沒有兩名學生居住在由走廊直接相連的房間中。

ICPC 比賽即將開始,學生們急忙前往散佈在系館各處的電腦座位。這裡有 $k$ 台電腦——與學生人數相同——位於某些房間中;此外,為了確保社交距離,沒有兩台電腦位於同一個房間,也沒有兩間直接相連的房間同時擁有電腦。學生們可以自行分配電腦,但他們必須始終保持社交距離——因此,將他們引導到該去的地方可能會很棘手,甚至是不可能的。

你是一位冷酷無情的 ICPC 組織者,也是這套終極難題的創作者。看著學生們驚慌失措地跑來跑去,你意識到一個可怕的事實:如果學生們沒有及時到達他們的房間,他們將無法參加比賽,那麼準備這些無法解決的難題所付出的所有努力都將付諸東流!你絕對不能允許這種情況發生。

給定學生目前的所在位置以及電腦的位置,請設計一個操作序列,將每位學生移動到有電腦的房間。每一次操作都應將一名學生移動到相鄰的房間;在每次操作後,不得有兩名學生位於同一個房間或兩個相鄰的房間。比賽開始前剩餘的時間允許你執行最多 $4n^2$ 次移動,其中 $n$ 是房間的數量。這項任務可能是不可能的,但只有一種方法可以驗證……

輸入格式

輸入的第一行包含測試案例的數量 $z$ ($1 \le z \le 100\,000$)。接著是各個測試案例的描述。

每個測試案例的第一行包含一個整數 $n$ ($2 \le n \le 2\,000$) —— 系館的房間數量。

接下來的 $n - 1$ 行,每行包含兩個整數 $u_i, v_i$ ($1 \le u_i \neq v_i \le n$) —— 由走廊相連的兩個房間。保證所描述的走廊形成一棵樹(一個沒有環的連通圖)。

下一行包含一個整數 $k$ ($1 \le k < n$) —— 學生(以及電腦)的數量。

下一行包含整數 $s_1, \dots, s_k$ ($1 \le s_1 < s_2 < \dots < s_k \le n$) —— 學生們的初始位置。

下一行包含整數 $c_1, \dots, c_k$,格式相同,表示擁有電腦的房間。

保證至少有一名學生位於沒有電腦的房間中。

所有測試案例的 $n^2$ 總和不超過 $4 \cdot 10^7$。

輸出格式

對於每個測試案例,如果可以在保持社交距離的情況下將學生移動到有電腦的房間,請輸出 “YES”(不含引號),否則輸出 “NO”。若為前者,請在接下來的行中列印任何有效的解決方案。

解決方案描述應以一個整數 $m$ ($1 \le m \le 4 \cdot n^2$) 開頭,表示移動次數。接著應有 $m$ 行,每行描述一次移動,包含兩個整數 $a_i, b_i$ ($1 \le a_i \neq b_i \le n$),表示目前位於房間 $a_i$ 的學生應移動到與 $a_i$ 由走廊相連的房間 $b_i$。

你不需要最小化解決方案的長度。

範例

輸入 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

輸出 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.