Некоторые из 2017 городов страны соединены прямыми двусторонними авиарейсами так, что из каждого города можно добраться до любого другого. Правительство хочет объявить
городов стратегически значимыми так, чтобы из любого города (включая стратегически значимые), совершив ровно один перелет, можно было попасть в стратегически значимый город. При каком наименьшем
это наверняка можно будет сделать?
Подсказка
Очевидно, достаточно разобрать случай, когда граф — дерево (в произвольном связном графе можно выделить дерево, содержащее все его вершины; если
стратегически значимых вершин будет достаточно для этого дерева, их будет достаточно и для исходного графа).
Докажем, что в графе с
вершинами можно указать несколько вершин и выделить из них несколько стратегически значимых так, что каждая выделенная вершина будет смежна с выделенной стратегически значимой, доля стратегически значимых среди выделенных будет не больше
и после удаления выделенных вершин граф останется связным.
Рассмотрим две вершины
и
, путь между которыми содержит наибольшее количество рёбер.
Решение
Ответ. При
. Решение. Введём граф городов и авиарейсов. Для начала приведём пример графа, в котором меньше чем 1344 стратегически значимыми вершинами не обойтись. Пусть в графе имеются вершины
, а также
и
; для каждого
проведём рёбра между вершиной
и
и
,
и
. Легко видеть, что этот граф связен. Поскольку вершина
связана только с вершиной
, то вершина
должна быть объявлена стратегически значимой. Кроме того, применяя условие задачи для вершины
получаем, что либо вершина
, либо вершина
должна быть объявлена стратегически значимой. Итак, из вершин
хотя бы две вершины должны быть стратегически значимыми. Рассуждая аналогично для каждой тройки
, получаем требуемое.
Докажем теперь, что 1344 стратегически значимыми вершинами можно обойтись. Очевидно, достаточно разобрать случай, когда граф — дерево (в произвольном связном графе можно выделить дерево, содержащее все его вершины; если
стратегически значимых вершин будет достаточно для этого дерева, их будет достаточно и для исходного графа).
Докажем, что в графе с
вершинами можно указать несколько вершин и выделить из них несколько стратегически значимых так, что каждая выделенная вершина будет смежна с выделенной стратегически значимой, доля стратегически значимых среди выделенных будет не больше
и после удаления выделенных вершин граф останется связным.
Рассмотрим две вершины
и
, путь между которыми содержит наибольшее количество рёбер. Пусть
— последняя перед
вершина на пути из
в
. Очевидно,
соединена только с
. Если
соединена с какимито висячими вершинами, кроме
, выделим
и все смежные с ней висячие вершины, а стратегически значимыми среди них объявим
и
. Очевидно, удаление этих вершин не нарушит связности графа, и стратегически значимые составляют среди них не более
.
Пусть
— единственная висячая вершина, соединённая с
. Рассмотрим последнюю вершину
на пути из
в
. Если все отличные от
вершины, путь из которых в
проходит через
, смежны с
, можно выделить эти вершины,
и
, а стратегическими среди них объявить
и
.
Наконец, разберём случай, когда путь из
в
можно продолжить несколькими путями
длины 2 (путями большей длины продолжить не удастся в силу максимальности выбранного выше пути из
в
). Пусть таких путей
. Тогда нужно выделить все вершины этих путей и все висячие вершины, смежные с
, а стратегически значимыми объявить
и все
. При этом из графа будет удалено не менее
вершин, из которых
стратегически значимых, а
.
Будем продолжать эту деятельность, пока от графа не останется огрызок, содержащий не более двух вершин. Если вершин не осталось вообще, то мы объявили стратегически значимыми не более
вершин, и процесс завершился. Если осталась одна вершина, то на предыдущем шаге нашего алгоритма она называлась
и была соединена с вершиной
или
, которую объявили стратегически значимой, значит, для нее условие выполнено, и стратегически значимыми было объявлено не более
вершин. Если же осталось две вершины, то, во-первых, они смежны, так как граф связности не теряет; во-вторых, одна из этих двух вершин была соединена с вершиной
или
, объявленной стратегически значимой на предыдущем шаге. Поэтому достаточно объявить стратегически значимой лишь одну из этих двух вершин, чтобы условие выполнялось. Значит, и в этом случае стратегически значимыми будет объявлено не более
вершин.