QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 2048 MB Puntuación total: 100 Dificultad: [mostrar] Hackeable ✓

#18202. Kolejność DFS 6

Estadísticas

Little Cyan Fish uwielbia porządki DFS. Dziś bada je ponownie, ale tym razem na nieskierowanych grafach prostych, a nie na drzewach ukorzenionych.

Ustalmy spójny, nieskierowany graf prosty $G$ o $n$ wierzchołkach ponumerowanych od $1$ do $n$ oraz wierzchołek startowy $s$. Porządek DFS grafu $G$ z wierzchołka $s$ to sekwencja, w której wierzchołki są odwiedzane po raz pierwszy przez poniższy algorytm przeszukiwania w głąb; remisy rozstrzygane są zawsze poprzez zejście do nieodwiedzonego sąsiada o najmniejszym numerze, dzięki czemu porządek DFS jest unikalny.

Algorytm 1 Porządek DFS użyty w tym zadaniu

 1: procedure DFS(vertex x)
 2:     Mark x as visited
 3:     Append x to the end of dfs_order
 4:     for each vertex y adjacent to x in G, in ascending order of label do
 5:         if y is not yet visited then
 6:             DFS(y)
 7:         end if
 8:     end for
 9: end procedure
10:
11: procedure GENERATE(G, vertex s)
12:     Mark all vertices as unvisited
13:     Let dfs_order be an empty list
14:     DFS(s)
15:     return dfs_order
16: end procedure
problem_18202_1.png

Graf o 7 wierzchołkach i 7 krawędziach. Porządek DFS z wierzchołka 1 to [1, 2, 3, 7, 4, 5, 6].

Little Cyan Fish przygotował $n$ permutacji $a_1, a_2, \dots, a_n$ liczb od $1$ do $n$. Każde $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ jest tym, co według niego powinno być porządkiem DFS z wierzchołka $i$.

Zrekonstruuj dowolny spójny, nieskierowany graf prosty $G$ o wierzchołkach $1, 2, \dots, n$ taki, że porządek DFS z każdego wierzchołka startowego $i$ jest równy $a_i$, lub określ, że taki graf nie istnieje.

Wejście

Dostępnych jest wiele przypadków testowych. Pierwsza linia wejścia zawiera pojedynczą liczbę całkowitą $T$ ($1 \le T$), oznaczającą liczbę przypadków testowych.

Dla każdego przypadku testowego pierwsza linia zawiera pojedynczą liczbę całkowitą $n$ ($1 \le n \le 200$). Każda z kolejnych $n$ linii zawiera $n$ liczb całkowitych; $i$-ta z tych linii zawiera $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — porządek DFS, który według Little Cyan Fish powstaje, gdy przeszukiwanie rozpoczyna się od wierzchołka $i$. Gwarantuje się, że $a_{i,1} = i$, a każdy wiersz $a_i$ jest permutacją liczb $1, 2, \dots, n$.

Gwarantuje się, że suma $n^2$ we wszystkich przypadkach testowych nie przekracza $4 \times 10^4$.

Wyjście

Dla każdego przypadku testowego, jeśli żaden odpowiedni graf nie istnieje, wypisz pojedynczą linię zawierającą „No”.

W przeciwnym razie wypisz „Yes” w pierwszej linii. W następnej linii wypisz pojedynczą liczbę całkowitą $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — liczbę krawędzi w twoim grafie.

Każda z kolejnych $m$ linii musi zawierać dwie liczby całkowite $u$ oraz $v$ ($1 \le u, v \le n, u \neq v$), oznaczające nieskierowaną krawędź między wierzchołkami $u$ oraz $v$. Wynikowy graf musi być prosty i spójny, a jego porządek DFS z każdego wierzchołka $i$ musi być równy $a_i$.

Jeśli wymagania spełnia wiele grafów, wypisz dowolny z nich.

Przykład

Wejście 1

2
3
1 2 3
2 1 3
3 2 1
3
1 2 3
2 3 1
3 1 2

Wyjście 1

Yes
2
1 2
2 3
No

Uwagi

Wyjaśnienie przykładu 1: W pierwszym przypadku testowym ścieżka $1 - 2 - 3$ jest poprawnym grafem: jego porządki DFS zaczynające się od wierzchołków 1, 2 i 3 to odpowiednio [1, 2, 3], [2, 1, 3] oraz [3, 2, 1]. W drugim przypadku testowym nie istnieje żaden odpowiedni graf.

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.