q
Mail.RuПочтаМой Мир0ОдноклассникиИгрыЗнакомстваНовостиПоиск
Имя    ( регистрация )
Пароль ( забыли? )

Метки  

Календарь


Задача G: Дерево и белка

Связная структура данных "дерево" предполагает наличие вершин и связей между ними. Циклов в дереве нет. Одна вершина дерева называется корнем, все вершины достижимы из нее. В этой задаче корнем всегда будет вершина 1.
На одной из вершин дерева находится белка. За один прыжок она может перепрыгнуть на любую вершину, находящуюся от нее на расстоянии не более чем K. Расстоянием называется количество ребер на пути из одной вершины до другой. Величину K будем называть прыгучестью белки.
Например, для дерева на рисунке, если K = 2 и белка находится в вершине 5, то белка может перепрыгнуть на вершины 1, 2, 3, 7, 8 и 9.

Первоначально, белка находится в вершине 1. Она хочет совершить последовательность прыжков, чтобы побывать на каждой вершине дерева, не посещая никакую два или более раза. Какой наименьшей прыгучестью должна обладать белка, чтобы совершить такое путешествие? Найдите и сам маршрут.
Все деревья в этой задаче удовлетворяют интересному свойству: для каждой вершины количество ее сыновей отлично от 1. Сыновьями вершины называются такие смежные с ней вершины, которые расположены дальше от корня, чем она сама.
Входные данные.
В первой строке входного файла записано целое число N (3 ≤ N ≤ 30000), где N - количество вершин в дереве. Далее следует строка, содержащая N - 1 число, описывающее дерево. Первое из этих чисел содержит номер вершины, смежной со второй, но расположенной ближе к корню, чем она сама. Второе из чисел содержит подобную информацию для третьей вершины, и т.д. Таким образом, i-ое число содержит подобную информацию для вершины i +1.
Выходные данные.
В первую строку выведите наименьшую возможную прыгучесть белки. Во вторую строку выведите последовательность номеров вершин в порядке посещения. Последовательность следует начинать с корня. Если существует несколько решений, выведите любое.
Примеры:
input.txtoutput.txt
Пример #19
1 5 2 1 2 1 5 5
2
1 3 8 9 5 7 2 4 6
Пример #212
1 2 3 2 2 6 5 6 1 3 5
3
1 2 4 11 3 7 9 5 8 12 6 10

Ограничение времени для 32-х битного компилятора: 1 секунда
Ограничение времени для 16-и битного компилятора: 8 секунд
Ограничение памяти: 64 мегабайта
Входной файл: input.txt
Выходной файл: output.txt
Про компиляторы можно почитать здесь

Нравится
Написать комментарий


     21-03-2007 12:26 (ссылка)
Re: Задача G: Дерево и белка
Наверное, самая интересная задача на этом миничемпионате. Большое спасибо авторам.
     23-03-2007 14:23 (ссылка)
Re: Задача G: Дерево и белка
А нельзя не учитывать попытки неудачной компиляции и, например, те, в которых человек забыл перенаправить потоки на файлы input.txt и output.txt ?
Евгений Михалевский      24-03-2007 20:02 (ссылка)
Re: Задача G: Дерево и белка
Интересно, а тест 17 коректен (и ответ к нему).
Евгений Михалевский      25-03-2007 10:49 (ссылка)
Re: Задача G: Дерево и белка
У меня есть подозрения, что авторское решение неверно.
Евгений Михалевский      25-03-2007 16:49 (ссылка)
Re: Задача G: Дерево и белка
Жури, перепроверте авторское решение.

Написать комментарий