e-olymp
Соревнования

Dynamic programming on Trees - Top Level

Микро и дерево

У Микро имеется дерево с n вершинами. Микро может выполнять на дереве следующую операцию. Он может выбрать вершину и удалить ее вместе со всем поддеревом (корнем которого является выбранная вершина) из текущего места, после чего прикрепить поддерево в качестве сына к любой другой вершине. Микро определил функцию f(x) на дереве как минимальное количество операций, необходимых для того чтобы из вершин дерева сделать прямую цепь, если дерево подвешено за корень x. Сейчас Микро хочет найти минимум среди всех f(i), где 1in.

Входные данные

Первая строка содержит количество вершин n (1n16) в дереве. Следующие n1 строк содержат по два целых числа x и y (1x, yn), указывающих на существование ребра между вершинами x и y.

Выходные данные

Вывести требуемый ответ.

Лимит времени 1 секунда
Лимит использования памяти 122.17 MiB
Входные данные #1
5
1 2
1 3
2 4
2 5
Выходные данные #1
1