EduBrick

F. Куда можно дойти сколь угодно дёшево

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

Дан ориентированный граф с весами любого знака. Отрицательные циклы возможны. Для вершины 1 найдите все вершины, до которых можно добраться путём сколь угодно малого веса.

Это те вершины, до которых есть путь через какой-нибудь отрицательный цикл, достижимый из вершины 1.

Алгоритм в три шага:

  1. Выполнить nn фаз Форда — Беллмана из вершины 1, аккуратно пропуская недостижимые вершины.
  2. Отметить все вершины, которые улучшились на nn-й фазе, — они лежат на отрицательных циклах или сразу за ними.
  3. Обходом пометить всё, что достижимо из отмеченных.

Третий шаг обязателен: улучшение на последней фазе замечает лишь несколько вершин цикла, а испорчены все, до кого от них можно дойти.

Такое разделение — «конечное расстояние», «минус бесконечность», «недостижимо» — встречается в любой задаче с отрицательными весами, и путать второе с третьим нельзя.

Формат ввода

Первая строка содержит числа nn (1≤n≤1001 \le n \le 100) и mm (0≤m≤1040 \le m \le 10^4).

Далее идут mm строк с рёбрами: начало, конец и вес (−100≤w≤100-100 \le w \le 100). Возможны кратные рёбра и петли.

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

В первой строке — количество таких вершин.

Во второй — их номера по возрастанию. Если их нет, вторая строка пустая.

Примеры

ввод
4 4
1 2 1
2 3 -5
3 2 1
3 4 1
вывод
3
2 3 4
ввод
2 1
2 2 -1
вывод
0

Войдите, чтобы отправлять решения.