QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 2048 MB

#22850. 트리 위의 슬라이딩 퍼즐

Statistics

정점이 $N$개이고 번호가 $1$부터 $N$까지 매겨진 트리가 주어집니다. 트리의 $i$번째 간선은 정점 $u_i$와 $v_i$를 연결합니다. 처음에 각 $i$ ($1 \le i \le N$)에 대해, 정점 $i$에는 $A_i = 1$이면 돌이 하나 놓여 있고 $A_i = 0$이면 돌이 놓여 있지 않습니다.

다음 연산을 반복해서 수행할 수 있습니다:

  • 아직 선택하지 않은 간선 중 양 끝점 가운데 정확히 한 곳에만 돌이 있는 간선을 하나 선택하고, 그 돌을 다른 끝점으로 이동시킵니다.

연산을 정확히 $N - 1$번 수행할 수 있는지 판별하세요. 가능하다면 간선을 선택하는 순서를 출력하세요.

입력

입력은 하나 이상의 테스트 케이스를 포함합니다. 입력의 첫 번째 줄에는 테스트 케이스의 개수를 나타내는 정수 $T$ ($1 \le T \le 10^5$)가 주어집니다. 이어서 $T$개의 테스트 케이스에 대한 설명이 각각 다음과 같은 형식으로 주어집니다.

$$ \begin{aligned} &N \\ &u_1 \ v_1 \\ &u_2 \ v_2 \\ &\vdots \\ &u_{N-1} \ v_{N-1} \\ &A_1 \ A_2 \ \ldots \ A_N \end{aligned} $$

첫 번째 줄에는 정점의 개수를 나타내는 정수 $N$ ($2 \le N \le 2 \times 10^5$)이 주어집니다.

각 $i$ ($1 \le i \le N - 1$)에 대해, 이어지는 줄 중 $i$번째 줄(총 $N - 1$개의 줄)에는 공백으로 구분된 두 정수 $u_i$와 $v_i$ ($1 \le u_i, v_i \le N$)가 주어지며, 이는 $i$번째 간선이 정점 $u_i$와 $v_i$를 연결함을 나타냅니다. 주어지는 그래프는 항상 트리임이 보장됩니다.

마지막 줄에는 공백으로 구분된 $N$개의 정수 $A_1, A_2, \ldots, A_N$ ($A_i \in \{0, 1\}$)이 주어집니다. $A_i$는 처음에 정점 $i$에 돌이 놓여 있는지를 나타냅니다.

모든 테스트 케이스에서 $N$의 합은 $2 \times 10^5$을 초과하지 않습니다.

출력

각 테스트 케이스마다 다음과 같이 정답을 출력합니다.

연산을 정확히 $N - 1$번 수행하는 것이 불가능하다면, 한 줄에 No를 출력합니다.

가능하다면, 첫 번째 줄에 Yes를 출력하고, 두 번째 줄에 선택한 간선의 수열을 다음 형식으로 출력합니다:

$$ e_1 \ e_2 \ \ldots \ e_{N-1} $$

여기서 $e_k$ ($1 \le e_k \le N - 1$)는 $k$번째 연산에서 선택한 간선의 번호를 나타냅니다. 올바른 수열이 여러 개라면 그중 아무것이나 출력해도 됩니다.

예제

입력 1

3
5
1 2
2 3
2 4
2 5
1 1 1 0 0
2
1 2
0 0
9
1 2
2 3
2 4
4 5
4 6
6 7
6 8
6 9
0 0 1 0 1 1 0 1 1

출력 1

Yes
3 2 4 1
No
Yes
6 7 4 2 1 3 5 8

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.