EduBrick

C. Дейкстра без кучи: обратно

3000 мс · 256 МБ · всё или ничего

Как классная задача C, но найдите расстояния до вершины 1 из каждой вершины, а не от неё.

Отдельного алгоритма для этого нет и не нужно. Разверните все рёбра — то есть транспонируйте матрицу, — и запустите ту же Дейкстру за O(n2)O(n^2) из вершины 1. Расстояние от вершины 1 в развёрнутом графе равно расстоянию до вершины 1 в исходном.

Транспонирование матрицы — это b[j][i] = a[i][j]. Легко перепутать индексы; проверяйте на примере, где ответ несимметричен.

Формат ввода

Первая строка содержит число nn (1≤n≤10001 \le n \le 1000).

Далее идут nn строк по nn чисел — матрица смежности ориентированного графа. −1-1 означает отсутствие ребра, вес не превосходит 10410^4, на главной диагонали нули.

Формат вывода

Одна строка из nn чисел: расстояния до вершины 1 или −1-1.

Примеры

ввод
4
0 1 -1 4
-1 0 2 -1
-1 -1 0 -1
-1 -1 5 0
вывод
0 -1 -1 -1
Войдите, чтобы отправлять решения.