QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 2048 MB

#22850. Układanka przesuwna na drzewie

Statistics

Dane jest drzewo o $N$ wierzchołkach ponumerowanych od $1$ do $N$. $i$-ta krawędź drzewa łączy wierzchołki $u_i$ oraz $v_i$. Początkowo, dla każdego $i$ ($1 \le i \le N$), na wierzchołku $i$ znajduje się jeden kamień, jeśli $A_i = 1$, lub nie ma kamienia, jeśli $A_i = 0$.

Możesz wielokrotnie wykonywać następującą operację:

  • Wybierz niewybraną dotąd krawędź, na której dokładnie jednym końcu znajduje się kamień, i przesuń ten kamień na drugi koniec.

Rozstrzygnij, czy można wykonać tę operację dokładnie $N - 1$ razy. Jeśli jest to możliwe, wypisz kolejność, w jakiej wybierane są krawędzie.

Wejście

Wejście zawiera jeden lub więcej przypadków testowych. Pierwszy wiersz wejścia zawiera liczbę całkowitą $T$ ($1 \le T \le 10^5$), oznaczającą liczbę przypadków testowych. Następnie podane są opisy $T$ przypadków testowych, każdy w następującym formacie.

$$ \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} $$

Pierwszy wiersz zawiera liczbę całkowitą $N$ ($2 \le N \le 2 \times 10^5$) oznaczającą liczbę wierzchołków.

Dla każdego $i$ ($1 \le i \le N - 1$), $i$-ty z kolejnych $N - 1$ wierszy zawiera dwie liczby całkowite $u_i$ oraz $v_i$ ($1 \le u_i, v_i \le N$) oddzielone spacją, oznaczające, że $i$-ta krawędź łączy wierzchołki $u_i$ oraz $v_i$. Gwarantowane jest, że dany graf jest drzewem.

Ostatni wiersz zawiera $N$ liczb całkowitych $A_1, A_2, \ldots, A_N$ ($A_i \in \{0, 1\}$) oddzielonych spacjami. $A_i$ określa, czy na początku na wierzchołku $i$ znajduje się kamień.

Suma wartości $N$ po wszystkich przypadkach testowych nie przekracza $2 \times 10^5$.

Wyjście

Dla każdego przypadku testowego wypisz odpowiedź w następujący sposób.

Jeśli wykonanie operacji dokładnie $N - 1$ razy jest niemożliwe, wypisz No w pojedynczym wierszu.

Jeśli jest to możliwe, wypisz Yes w pierwszym wierszu, a w drugim wierszu wypisz ciąg krawędzi w następującym formacie:

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

Tutaj $e_k$ ($1 \le e_k \le N - 1$) oznacza indeks krawędzi wybranej w $k$-tej operacji. Jeśli istnieje wiele poprawnych ciągów, możesz wypisać dowolny z nich.

Przykład

Wejście 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

Wyjście 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.