QOJ.ac

QOJ

Límite de tiempo: 10 s Límite de memoria: 512 MB Puntuación total: 100

#857. 社交距离

Estadísticas

关于学生,有两点不得不提:他们讨厌做多余的工作,并且喜欢与他人保持距离。前者大概就是为什么系里将建筑设计成树状结构的原因(在两个间接相连的房间之间建造走廊纯属浪费时间);后者则是为什么他们在当前的疫情下反而如鱼得水。现在,社交距离不再是一种奢侈,而是常态!

然而,树状结构的建筑与保持社交距离并不完全兼容。目前,部分房间里有 $k$ 名学生,由于社交距离政策,每个房间最多只能有一名学生。此外,没有两名学生居住在由走廊直接相连的房间里。

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.