O. Самый короткий отрицательный цикл
Найдите наименьшее количество рёбер в цикле отрицательного веса.
Форд — Беллман отвечает на вопрос «есть ли такой цикл», но про его длину ничего не говорит. Нужна другая динамика — по числу рёбер.
Пусть — наименьший вес маршрута из в ровно из рёбер (вершины могут повторяться). Тогда
а отрицательный цикл из рёбер существует тогда и только тогда, когда для какого-нибудь .
Перебираем от 1 до и отвечаем на первом же, где нашлось. Дальше идти незачем: цикл минимальной длины не повторяет вершин, значит рёбер в нём не больше .
Стоимость одного шага — , всего . При это тринадцать миллионов операций.
Заметьте, что маршрут из рёбер с повторами — это нормально: если он замкнут и имеет отрицательный вес, внутри него обязательно найдётся отрицательный простой цикл, и он не длиннее. Поэтому наименьшее , на котором диагональ ушла в минус, и есть ответ.
Формат ввода
Первая строка содержит числа () и ().
Далее идут строк с рёбрами: начало, конец и вес (). Возможны кратные рёбра и петли.
Формат вывода
Одно число — наименьшее количество рёбер в отрицательном цикле, или , если такого цикла нет.
Примеры
3 3 1 2 1 2 3 1 3 1 -3
3
1 1 1 1 -5
1