EduBrick

E. Сам отрицательный цикл

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

То же, что в предыдущей задаче, но при наличии цикла его надо вывести.

Цикл восстанавливается массивом предков, но не напрямую: вершина, релаксировавшаяся на nn-й фазе, сама на цикле лежать не обязана — она может быть лишь достижима из него. Спасает такой приём: пройти от неё по предкам nn раз. За nn шагов мы гарантированно попадём внутрь цикла, потому что цепочка предков рано или поздно в него заходит и дальше не выходит.

Дальше от полученной вершины xx идём по предкам, пока снова не встретим xx, — это и есть цикл.

Формат ввода

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

Далее идут nn строк по nn чисел — матрица смежности. Веса по модулю меньше 10510^5; значение ровно 10510^5 означает отсутствие ребра.

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

NO, если отрицательного цикла нет.

Иначе YES, во второй строке количество вершин в цикле (считая первую и последнюю), в третьей — сами вершины в порядке обхода.

Примеры

ввод
3
100000 100000 -51
100 100000 100000
100000 -50 100000
вывод
YES
4
3 2 1 3
ввод
2
100000 100000
100000 100000
вывод
NO
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.