F. Куда можно дойти сколь угодно дёшево
Дан ориентированный граф с весами любого знака. Отрицательные циклы возможны. Для вершины 1 найдите все вершины, до которых можно добраться путём сколь угодно малого веса.
Это те вершины, до которых есть путь через какой-нибудь отрицательный цикл, достижимый из вершины 1.
Алгоритм в три шага:
- Выполнить фаз Форда — Беллмана из вершины 1, аккуратно пропуская недостижимые вершины.
- Отметить все вершины, которые улучшились на -й фазе, — они лежат на отрицательных циклах или сразу за ними.
- Обходом пометить всё, что достижимо из отмеченных.
Третий шаг обязателен: улучшение на последней фазе замечает лишь несколько вершин цикла, а испорчены все, до кого от них можно дойти.
Такое разделение — «конечное расстояние», «минус бесконечность», «недостижимо» — встречается в любой задаче с отрицательными весами, и путать второе с третьим нельзя.
Формат ввода
Первая строка содержит числа () и ().
Далее идут строк с рёбрами: начало, конец и вес (). Возможны кратные рёбра и петли.
Формат вывода
В первой строке — количество таких вершин.
Во второй — их номера по возрастанию. Если их нет, вторая строка пустая.
Примеры
4 4 1 2 1 2 3 -5 3 2 1 3 4 1
3 2 3 4
2 1 2 2 -1
0