D. Есть ли отрицательный цикл
Граф задан матрицей смежности; значение означает отсутствие ребра. Определите, есть ли в графе цикл отрицательного веса.
Приём стандартный: положить расстояния всех вершин равными нулю и выполнить фаз Форда — Беллмана. Нули вместо бесконечностей означают, что мы одновременно запускаем алгоритм из всех вершин сразу, — иначе цикл в другой компоненте остался бы незамеченным.
Если на -й фазе хоть что-то улучшилось, отрицательный цикл есть. Обоснование: без отрицательного цикла любое расстояние достигается путём не более чем из рёбер, и после фаз улучшать нечего.
Обратите внимание, что фаз, а не : последняя фаза — это и есть проверка.
Петля отрицательного веса — тоже отрицательный цикл, и алгоритм её ловит без особых оговорок.
Формат ввода
Первая строка содержит число ().
Далее идут строк по чисел — матрица смежности. Веса по модулю меньше ; значение ровно означает отсутствие ребра.
Формат вывода
Одно слово: YES или NO.
Примеры
3 100000 100000 -51 100 100000 100000 100000 -50 100000
YES
2 100000 100000 100000 100000
NO