QOJ.ac

QOJ

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

#18202. Ordre DFS 6

Estadísticas

Little Cyan Fish adore les ordres DFS. Aujourd'hui, il les étudie à nouveau, mais sur des graphes simples non orientés plutôt que sur des arbres enracinés.

Fixons un graphe simple non orienté connexe $G$ à $n$ sommets étiquetés de $1$ à $n$, et un sommet de départ $s$. L'ordre DFS de $G$ à partir de $s$ est la séquence dans laquelle les sommets sont visités pour la première fois par la recherche en profondeur décrite ci-dessous ; les égalités sont tranchées en descendant toujours vers le voisin non visité ayant la plus petite étiquette, de sorte que l'ordre DFS est unique.

Algorithme 1 L'ordre DFS utilisé dans ce problème

 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

Un graphe avec 7 sommets et 7 arêtes. L'ordre DFS à partir du sommet 1 est [1, 2, 3, 7, 4, 5, 6].

Little Cyan Fish a préparé $n$ permutations $a_1, a_2, \dots, a_n$ de $1$ à $n$. Chaque $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ est ce qu'il prétend être l'ordre DFS à partir du sommet $i$.

Reconstruisez n'importe quel graphe simple non orienté connexe $G$ sur les sommets $1, 2, \dots, n$ tel que l'ordre DFS à partir de chaque sommet de départ $i$ soit égal à $a_i$, ou déterminez qu'aucun graphe de ce type n'existe.

Entrée

Il y a plusieurs cas de test. La première ligne de l'entrée contient un entier unique $T$ ($1 \le T$), indiquant le nombre de cas de test.

Pour chaque cas de test, la première ligne contient un entier unique $n$ ($1 \le n \le 200$). Chacune des $n$ lignes suivantes contient $n$ entiers ; la $i$-ième de ces lignes contient $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — l'ordre DFS que Little Cyan Fish prétend être produit lorsque la recherche commence à partir du sommet $i$. Il est garanti que $a_{i,1} = i$, et chaque ligne $a_i$ est une permutation de $1, 2, \dots, n$.

Il est garanti que la somme des $n^2$ sur tous les cas de test n'excède pas $4 \times 10^4$.

Sortie

Pour chaque cas de test, si aucun graphe approprié n'existe, affichez une seule ligne contenant « No ».

Sinon, affichez « Yes » sur la première ligne. Sur la ligne suivante, affichez un entier unique $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — le nombre d'arêtes dans votre graphe.

Chacune des $m$ lignes suivantes doit contenir deux entiers $u$ et $v$ ($1 \le u, v \le n, u \neq v$), désignant une arête non orientée entre les sommets $u$ et $v$. Le graphe résultant doit être simple et connexe, et son ordre DFS à partir de chaque sommet $i$ doit être égal à $a_i$.

Si plusieurs graphes satisfont les exigences, affichez l'un d'entre eux.

Exemples

Entrée 1

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

Sortie 1

Yes
2
1 2
2 3
No

Remarque 1

Dans le cas de test, le chemin $1 - 2 - 3$ est un graphe valide : ses ordres DFS à partir des sommets 1, 2 et 3 sont respectivement $[1, 2, 3]$, $[2, 1, 3]$ et $[3, 2, 1]$. Dans le second cas de test, aucun graphe approprié n'existe.

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.