QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 2048 MB مجموع النقاط: 100 الصعوبة: [عرض] قابلة للهجوم ✓

#18202. DFS Order 6

الإحصائيات

Маленькая голубая рыбка любит DFS-порядки. Сегодня она изучает их снова, но на этот раз для неориентированных простых графов, а не для корневых деревьев.

Зафиксируем связный неориентированный простой граф $G$ с $n$ вершинами, пронумерованными от $1$ до $n$, и начальную вершину $s$. DFS-порядок графа $G$ из вершины $s$ — это последовательность, в которой вершины посещаются впервые при выполнении поиска в глубину, описанного ниже; при выборе между несколькими вариантами всегда выбирается непосещенный сосед с наименьшим номером, поэтому DFS-порядок уникален.

Алгоритм 1: DFS-порядок, используемый в этой задаче

 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

Граф с 7 вершинами и 7 ребрами. DFS-порядок из вершины 1 равен [1, 2, 3, 7, 4, 5, 6].

Маленькая голубая рыбка подготовила $n$ перестановок $a_1, a_2, \dots, a_n$ чисел от $1$ до $n$. Каждая $a_i = [a_{i,1}, a_{i,2}, \dots, a_{i,n}]$ — это то, что, по её утверждению, является DFS-порядком при поиске из вершины $i$.

Восстановите любой связный неориентированный простой граф $G$ на вершинах $1, 2, \dots, n$ такой, что DFS-порядок из каждой начальной вершины $i$ равен $a_i$, или определите, что такого графа не существует.

Входные данные

Имеется несколько тестовых случаев. Первая строка входных данных содержит единственное целое число $T$ ($1 \le T$), указывающее количество тестовых случаев.

Для каждого тестового случая первая строка содержит единственное целое число $n$ ($1 \le n \le 200$). Каждая из следующих $n$ строк содержит $n$ целых чисел; $i$-я из этих строк содержит $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n$) — DFS-порядок, который, по утверждению Маленькой голубой рыбки, получается при поиске из вершины $i$. Гарантируется, что $a_{i,1} = i$, и каждая строка $a_i$ является перестановкой чисел $1, 2, \dots, n$.

Гарантируется, что сумма $n^2$ по всем тестовым случаям не превышает $4 \times 10^4$.

Выходные данные

Для каждого тестового случая, если подходящего графа не существует, выведите одну строку, содержащую «No».

В противном случае выведите «Yes» в первой строке. В следующей строке выведите единственное целое число $m$ ($n - 1 \le m \le \frac{n(n-1)}{2}$) — количество ребер в вашем графе.

Каждая из следующих $m$ строк должна содержать два целых числа $u$ и $v$ ($1 \le u, v \le n, u \neq v$), обозначающих неориентированное ребро между вершинами $u$ и $v$. Полученный граф должен быть простым и связным, а его DFS-порядок из каждой вершины $i$ должен быть равен $a_i$.

Если условиям удовлетворяют несколько графов, выведите любой из них.

Примеры

Пример 1

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

Выходные данные 1

Yes
2
1 2
2 3
No

Примечание

В первом тестовом случае путь $1-2-3$ является подходящим графом: его DFS-порядки из вершин $1, 2$ и $3$ равны $[1, 2, 3]$, $[2, 1, 3]$ и $[3, 2, 1]$ соответственно. Во втором тестовом случае подходящего графа не существует.

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.