EduBrick

K. Одностороннее движение

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

В стране nn городов и mm двусторонних дорог; из любого города можно доехать до любого. Все дороги делают односторонними так, чтобы это свойство сохранилось. Определите, возможно ли это, и если да — укажите направление каждой дороги.

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

Построение — обход в глубину. Древесные рёбра направляем вниз, от предка к потомку. Все остальные рёбра направляем вверх, от потомка к предку: в неориентированном графе перекрёстных рёбер не бывает, поэтому концы любого недревесного ребра связаны отношением «предок — потомок», и достаточно сравнить времена входа.

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

Ответ единственный: обход запускается из вершины 1, соседи перебираются по возрастанию номера, а при равенстве — по возрастанию номера ребра.

Формат ввода

Первая строка содержит числа nn (2≤n≤10002 \le n \le 1000) и mm (1≤m≤1051 \le m \le 10^5).

Далее идут mm строк с дорогами. Петель нет, кратные дороги возможны; граф связен.

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

Если ориентации нет — одно число 00.

Иначе mm строк: для каждой дороги в порядке ввода — откуда и куда по ней можно ехать.

Примеры

ввод
4 6
1 2
1 2
2 3
2 4
4 3
1 4
вывод
1 2
2 1
2 3
4 2
3 4
4 1
ввод
2 1
1 2
вывод
0
Войдите, чтобы отправлять решения.