0 … node_count - 1 задан списком рёбер links. Гарантируется, что его можно разложить по клеткам прямоугольной таблицы так, чтобы каждая вершина заняла ровно одну клетку, а две вершины стояли в соседних клетках (по горизонтали или вертикали) тогда и только тогда, когда между ними есть ребро.
Таких раскладок обычно несколько, поэтому верните одну конкретную — таблицу как список строк:
- В левой верхней клетке стоит угловая вершина с наибольшим номером. Угловые — это вершины с наименьшим числом соседей (у цепочки это её концы).
- Если у раскладки есть сторона длиной в одну или две клетки, таблица делается именно такой ширины: один или два столбца.
- Иначе первая строка идёт от левой верхней вершины в сторону её соседа с меньшим номером.
Для таблицы 2 × 2 действуют оба последних правила сразу: два столбца, и правый сосед — меньший.node_count=6, links=[[0, 1], [0, 3], [1, 2], [1, 4], [2, 5], [3, 4], [4, 5]] → [[5, 2], [4, 1], [3, 0]]
Граф — прямоугольник 2 × 3. Угловые вершины 0, 2, 3, 5, наибольшая из них 5 идёт в левый верхний угол. Одна сторона длиной в две клетки, поэтому столбцов два: первая строка — 5 и соседний угол 2.
node_count=3, links=[[0, 2], [1, 2]] → [[1], [2], [0]]
Граф — цепочка 1–2–0, она укладывается в один столбец, сверху больший из концов, 1.
node_count=9, links=[[0, 4], [0, 6], [0, 8], [1, 6], [1, 7], [1, 8], [2, 4], [2, 5], [2, 8], [3, 5], [3, 7], [3, 8]] → [[7, 1, 6], [3, 8, 0], [5, 2, 4]]
Углы — 4, 5, 6, 7; в левый верхний угол идёт 7. Её соседи 1 и 3, первая строка идёт к меньшему, 1, и дальше вдоль края до угла 6.
node_count=6, links=[[0, 1], [0, 3], [1, 2], [1, 4], [2, 5], [3, 4], [4, 5]]
[[5, 2], [4, 1], [3, 0]]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 9 тестов на сервере, включая скрытые.