QOJ.ac

QOJ

حد الوقت: 12 s حد الذاكرة: 512 MB مجموع النقاط: 100

#853. Плоская организация

الإحصائيات

Компания, в которой вы работаете, решила довести идею плоской организационной структуры до предела: для каждой пары сотрудников $A$ и $B$ либо $A$ был назначен непосредственным руководителем $B$, либо $B$ был назначен непосредственным руководителем $A$. Конечно, это означает, что теперь у человека может быть довольно много непосредственных руководителей... что замечательно, поскольку это заставляет сотрудника чувствовать, что его работа действительно важна для стольких людей, а не только для одного начальника, говорят руководители.

Однако всегда есть возможности для улучшения. В качестве корпоративной цели на этот год иерархия будет пересмотрена, чтобы гарантировать, что всякий раз, когда человек $A$ является непосредственным руководителем человека $B$, то $B$ также одновременно косвенно руководит $A$ (мы говорим, что $B$ косвенно руководит $A$, если существует $n > 2$ и последовательность $(c_1, \dots, c_n)$ такая, что $c_1 = B$, $c_n = A$ и для каждого $i < n$, $c_i$ является непосредственным руководителем $c_{i+1}$).

Это гарантирует, что любой сотрудник дважды подумает, прежде чем решит злоупотребить своим положением по отношению к кому-либо другому, говорят руководители.

Впрочем, не стоит удивляться, что человек может быть несколько раздражен, если узнает, что его подчиненный внезапно был назначен его руководителем. И некоторые такие решения могут вызвать больше недовольства, чем другие. Ваша задача — выполнить корпоративную цель, изменив некоторые зависимости между сотрудниками таким образом, чтобы сумма недовольства от этих изменений была как можно меньше.

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

Первая строка входных данных содержит количество тестовых случаев $z$ ($1 \le z \le 100$). Далее следуют описания тестовых случаев.

Первая строка каждого тестового случая содержит единственное целое число $n$ ($1 \le n \le 2000$) — количество сотрудников. Сотрудники пронумерованы от 1 до $n$.

Затем следуют $n$ строк, содержащих $n$ целых чисел $d_{i,j}$, каждое ($0 \le d_{i,j} \le 2 \cdot 10^9$). Если сотрудник $i$ является непосредственным руководителем сотрудника $j$, то $d_{i,j} > 0$ описывает недовольство, которое почувствует $i$, если эта зависимость будет обращена. В противном случае (то есть если $j$ является непосредственным руководителем $i$ или если $i = j$), $d_{i,j} = 0$.

Общее количество сотрудников во всех тестовых случаях не превышает 10000.

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

Для каждого тестового случая предоставьте решение, которое гарантирует, что для любой пары сотрудников $i, j$ ($1 \le i, j \le n, i \neq j$) либо $i$ будет непосредственным руководителем $j$, а $j$ будет косвенным руководителем $i$, либо наоборот. Ваше решение должно минимизировать сумму недовольства, которое почувствуют сотрудники. Если существует более одного такого решения, вы можете вывести любое из них.

Если решение не существует, вы должны вывести единственную строку, содержащую слово «NO».

В противном случае, в первой строке выведите единственное слово «YES». Во второй строке выведите два целых числа $k$ и $r$ — количество зависимостей между сотрудниками, которые вы намерены обратить, и достигнутую сумму недовольства соответственно. Обратите внимание, что вам не нужно минимизировать $k$.

Затем выведите $k$ строк, каждая из которых содержит два целых числа — идентификаторы сотрудников $a, b$ ($1 \le a, b \le n, a \neq b$) таких, что $a$ в настоящее время является непосредственным руководителем $b$ и их отношения должны быть обращены. Вы никогда не должны выводить одну и ту же пару сотрудников более одного раза.

Примеры

Пример 1

1
5
0 1 0 6 11
0 0 1 6 12
2 0 0 7 12
0 0 0 0 4
0 0 0 0 0

Пример 1

YES
2 10
4 5
2 4

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#183EditorialOpen题解jiangly2025-12-12 23:58:03View

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.