eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Матриця мінімальних розрізів

Матриця мінімальних розрізів

Вам задано зв'язний зважений граф \textbf{G}. \textit{Мінімальним реберним розрізом} між вершинами \textbf{u} \textbf{v} назвемо множину \textbf{C_\{u,v\}} ребер з найменшою сумарною вагою, таку, що довільний шлях з \textbf{u} в \textbf{v} містить хоча б одне ребро з \textbf{C_\{u,v\}}. Позначимо величину мінімального розрізу між вершинами \textbf{u} та \textbf{v} як \textbf{c_\{u,v\}}. Матрицю \textbf{c_\{u,v\}} назвемо \textit{матрицею мінімальних розрізів} графа \textbf{G}. Вам задано матрицю \textbf{c_\{u,v\}}. Знайдіть граф \textbf{G} такий, що \textbf{c_\{u,v\}} - це матриця мінімальних розрізів цього графа чи визначте, що такого графа не існує. \InputFile У першому рядку вхідного файлу міститься число \textbf{n} - розмір матриці (\textbf{2} ≤ \textbf{n} ≤ \textbf{50}). Наступні \textbf{n} рядків містять по \textbf{n} чисел кожен - елементи матриці. Гарантується, що матриця симетрична і містить лише нулі на головній діагоналі. Усі інші числа додатні і не перевищують \textbf{1000}. \OutputFile Якщо існує граф \textbf{G}, для якого матриця з вхідного файлу - матриця мінімальних розрізів, напишіть у першому рядку вихідного файлу \textbf{YES}. У другому рядку виведіть \textbf{M} - число ребер графа. Далі, у \textbf{m} рядках виведіть описи ребер графа. Кожне ребро \textbf{i} задається початковою вершиною \textbf{u_i}, кінцевою вершиною \textbf{v_i} та вагою ребра між вершинами \textbf{u_i} та \textbf{v_i}. У графі не повинно бути петель, паралельних дуг. Вага кожного ребра не повинна перевищувати \textbf{1000}. Якщо графа, який задовольняє умові, не існує, виведіть у єдиному рядку вихідного файлу \textbf{NO}.
Ліміт часу 2 секунди
Ліміт використання пам'яті 256 MiB
Вхідні дані #1
3
0 2 2
2 0 2
2 2 0
Вихідні дані #1
YES
2
1 2 2
1 3 2
Автор А.Станкевич, А.Комаров