Деревья и остовные деревья
Ошибка.
Попробуйте повторить позже
В некоторой стране есть городов, которые связаны такой сетью дорог, что из любого города в любой другой можно проехать только одним способом без разворотов. Схема сети дорог известна, развилки и перекрестки сети необязательно являются городами, всякая тупиковая ветвь сети обязательно заканчивается городом. Навигатор может измерить длину пути по этой сети между любыми двумя городами. Можно ли за таких измерений гарантированно определить длину всей сети дорог?
Подсказка 1
Города и дороги сразу же намекают нам о том, что над задачей стоит думать в формате графа. Но что это за граф такой, в котором из любой вершины в любую другую можно попасть только одним единственным способом?
Подсказка 2
Наш граф является деревом, так как он связный и в нём не может быть циклов. Заметьте, что нам доступно не более 100 измерений. А чего в дереве из ста вершин будет менее сотни?
Подсказка 3
В дереве на ста вершинах всегда будет меньше ста листов. Подумайте над обходом, который обходит последовательно все листья и позволяет нам посчитать количество всех ребер в дереве.
Подсказка 4
Подвесим наше дерево за одну из вершин, не являющуюся листом, это будет корень. Рассмотрим вариант обхода. Выбираем случайный лист и ищем следующий для него, всегда будем идти по самому правому, еще не посещенному, ведущему вниз ребру, если таких нет, то поднимаемся на уровень выше, движемся таким образом, пока не окажемся в листе.
Подсказка 5
Повторяем данный алгоритм последовательно, пока не вернемся в изначальный лист. Сколько раз в результате такого обхода будет посещено каждое ребро?
Представим описанную в условии сеть дорог в виде графа, вершинами которого являются города, развилки и перекрестки, а ребрами — дороги. Покажем, что этот граф является деревом, то есть связным графом без циклов. Связность следует из того, что из любого города можно проехать в любой другой, а любая развилка или перекресток должны быть соединены с каким-либо городом. Допустим, что в нашем графе есть цикл. Он не содержит двух и более вершин-городов, так как в этом случае, двигаясь в противоположных направлениях по циклу, мы могли бы получить два различных пути из одного города в другой. Далее, пусть между некоторыми городами и существует путь, содержащий какую-то вершину цикла. Он обязательно найдется, так как иначе эта вершина не могла бы быть в нашей сети. Но тогда, добавляя к этому пути «кольцо» вдоль цикла, мы получим еще один путь между и Значит, циклов в нашем графе быть не может и это действительно дерево.
По условию задачи все концевые вершины дерева — города. Назовем эти города концевыми. Назовем также концевой город следующим за концевым городом если по пути из в на каждой развилке выбирается самая правая дорога. Выберем какой-нибудь концевой город и измерим расстояние между ним и следующим за ним концевым городом Потом измерим расстояние между и следующим за ним концевым городом и так далее. После не более чем таких измерений мы вернемся в исходный город
Покажем, что при этом каждая дорога нашей сети будет пройдена ровно два раза в противоположных направлениях. Рассмотрим произвольную дорогу. При удалении из дерева любого ребра оно распадается на две компоненты связности и причем каждая из них содержит города. Пусть изначально мы находились в Поскольку необходимо обойти все города сети, мы должны пройти по этой дороге два раза: первый раз — когда движемся из в а второй — когда возвращаемся обратно. Процедура обхода устроена таким образом, что мы посетим все вершины компоненты до того, как покинем ее, поэтому больше проходить по дороге из в не потребуется.
Наконец, сложив измеренные величины и разделив сумму пополам, мы получим длину всей сети.
Да, можно
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!