Дан связный граф на 2009 вершинах. Докажите, что в нем можно выделить 2008 ребер и расставить на них стрелки так, чтобы для любых двух вершин, соединенных ребром в исходном графе, из одной из них в другую можно было бы пройти по стрелкам.
Подсказка
Отметим в нашем графе
любую вершину
и построим дерево поиска в глубину
с корнем
.
Решение
Отметим в нашем графе
любую вершину
и построим дерево поиска в глубину
с корнем
.
Пронумеруем вершину
числом 0 и будем добавлять в дерево и нумеровать вершины по следующему принципу: если в дереве есть вершины с номерами от 1 до
, то рассмотрим вершину с наибольшим номером, из которой выходит хотя бы одно ребро в вершину, не принадлежащую уже построенному дереву, добавим любое из таких рёбер в дерево, и новой вершине присвоим номер
. Все ребра дерева
ориентируем от меньшего номера к большему.
Пусть
— номер вершины
при построении дерева
. Докажем, что все требования задачи выполняются. Очевидно, в остовном дереве графа на 2009 вершинах как раз 2008 ребер, так что мы поставили 2008 стрелочек. Пусть
— ребро исходного графа
, причем
. Если
входит в
, всё в порядке. В противном случае вершина
подвешена в
к вершине
. Так как в графе
вершина
смежна с
, то по построению дерева
, и
. Рассмотрим момент, когда добавлялась вершина
. Так как в этот момент в дереве еще нет смежной с
вершины
, то по построению вершина
подвешена в
к вершине
, где
. И так далее, пока очередная вершина
не окажется совпадающей с
(это случится, потому что номера
монотонно убывают, и все они не меньше, чем
). Искомый путь
построен.