В стране некоторые пары городов соединены дорогами с односторонним движением, причем из любого города можно проехать в любой другой. Из каждого города выходит хотя бы две дороги и в каждый город входит хотя бы две дороги. Докажите, что можно найти циклический маршрут и удалить все его дороги так, что по-прежнему из любого города можно будет проехать в любой другой.
(Д. Картов)
Построим орграф G, города — вершины, дороги — ориентированные ребра (будем называть их стрелками). Напомним, что орграф называется сильно связном, если между любыми двумя вершинами существует путь по стрелкам (именно такой орграф у нас получился). Если орграф не является сильно связным, его вершины можно разбить на компоненты сильной связности — максимальные по включению сильно связные подграфы. В отличие от обычных компонент связности, между двумя компонентами сильной связности могут быть проведены стрелки, но только одного направления, иначе эти две компоненты нужно было бы объединить в одну.
Компонента сильной связности называется крайней, если из нее не выходит ни одной стрелки в другие компоненты сильной связности. Такая компонента сильной связности обязательно есть (докажите это!).
Вернемся к решению задачи. Для цикла Z в орграфе G обозначим через граф, полученный из G в результате удаления стрелок цикла Z. Предположим противное, пусть для любого цикла Z граф не сильно связен. Тогда выберем Z так, чтобы одна из крайних компонент сильной связности орграфа содержала наименьшее возможное число вершин обозначим ее U. Из каждой вершины U выходит хотя бы две стрелки в орграфе G, а значит, хотя бы одна стрелка в орграфе (цикл проходит по вершине не более одного раза). Следовательно, в компоненте U более одной вершины. Так как орграф U сильно связен, в нем есть цикл C.
Рассмотрим орграф Все отличные от U компоненты остались сильно связными подграфами и в графе так как все стрелки между ними сохранились, а стрелки цикла