Олимпиадный тренинг

Задача . D. Граф и его дополнение


Заданы три числа \(n, a, b\). Вам нужно найти матрицу смежности такого неориентированного графа, что количество компонент связанности в нем равно \(a\), а количество компонент связанности в его дополнении равно \(b\). Найденная матрица обязательно должна быть симметричной, а также на главной диагонали обязательно должны быть нули.

В неориентированном графе недопустимы петли (ребра из вершины в себя же), между каждой парой вершин может быть не более одного ребра.

Матрица смежности неориентированного графа — это квадратная матрица размера \(n\), состоящая только из «0» и «1», где \(n\) — количество вершин графа, а \(i\)-я строка и \(i\)-й столбец соответствуют \(i\)-й вершине графа. Ячейка \((i,j)\) матрицы смежности содержит \(1\) тогда и только тогда, когда \(i\)-я и \(j\)-я вершины в графе соединены ребром.

Компонента связанности — это такой набор вершин \(X\), что для любой пары вершин в компоненте существует хотя бы один путь, соединяющий их, и добавление любой новой вершины в \(X\) нарушает это правило.

Дополнением графа \(G\) называется граф \(H\) с теми же вершинами, такой, что две вершины графа \(H\) соединены ребром тогда и только тогда, когда эти вершины не соединены ребром в графе \(G\).

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

В единственной строке заданы три числа \(n, a, b \,(1 \le n \le 1000, 1 \le a, b \le n)\) — количество вершин графа, необходимое количество компонент связанности в нем и необходимое количество компонент связанности в его дополнении.

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

Если не существует графа, удовлетворяющего данным ограничениям в единственную строку выведите «NO»(без кавычек).

Иначе в первой строке выведите «YES»(без кавычек). В следующих \(n\) строках выведите по \(n\) цифр в каждой — матрицу смежности данного графа, т. е. \(i\)-е цифра в \(j\)-й строке должна быть равна \(1\), если в \(G\) существует ребро между вершинами \(i\) и \(j\) (иначе эта цифра должна быть равна \(0\)).

Обратите внимание, что выведенная матрица обязательно должна быть симметричной, а также на главной диагонали обязательно должны быть нули.

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


Примеры
Входные данныеВыходные данные
1 3 1 2
YES
001
001
110
2 3 3 3
NO

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя