Зеркальное дерево?
MIRROR-TREE-CHECK (MT Check) — классическая CAPTCHA у ворот системы планеты Link-Cut. Она заключается в простой проверке дерева на зеркальную симметрию.
Вот процесс отражения дерева:
Выберите две вершины и (далее будем называть это как отражение относительно пути —).
Подвесьте дерево от вершины .
Для каждой вершины на пути от до создайте копию поддеревьев каждой из дочерних вершин вершины и подвесим их к той же вершине, если поддерево этой вершины не содержит .
Мы будем обозначать этот процесс как , что означает отражение дерева относительно пути -.
Вот пример отражения данного дерева относительно пути между -й и -й вершинами:
Исходное дерево | Новое дерево, где синие вершины обозначают вершины, которые были добавлены |
Дерево называется зеркальным, если мы можем выбрать другое дерево и две его вершины и , так что дерево и дерево похожи.
Мы считаем два дерева похожими, если мы можем изменить нумерацию вершин в обоих деревьях так, чтобы наборы рёбер этих двух деревьев были идентичны.
Вы были готовы к этой задаче, но злой Чмякс удивил вас новым трюком. Бросив заклинание на ворота, он добавил один лист во входное дерево. Теперь ворота не пустят никого.
Вы были почти в отчаянии, когда вдруг появился волшебник Фруси, чтобы помочь вам. Фруси обладает сильной магией и может попытаться разбить заклинание, но для этого ему придётся удалить лист, который добавил Чмякс. Проверка каждого листа заняла бы слишком много времени и требовала бы слишком много маны (даже у Фруси её не так много). К счастью, наш волшебник узнал о заклинании и рассказал вам о побочном эффекте: дерево до добавления листа определённо было зеркальным.
Фруси сейчас готовит свои заклинания, и ваша задача - найти все потенциальные листья, которые мог добавить Чмякс (т.е. все такие листья, после удаления которых дерево станет зеркальным, далее будем называть плохими листьями) или сказать, что Фруси ошибся и таких листьев нет.
Входные данные
В первой строке содержится одно целое число — количество вершин в дереве. Каждая из следующих строк содержит два целых числа и — ребро между и . Гарантируется, что эти рёбра образуют дерево.
Выходные данные
В первой строке выведите количество плохих листьев (если таких листьев нет — выведите ).
Во второй строке выведите все плохие листья, отсортированные по возрастанию или ничего не выводите, если таких листьев нет.
Примеры
Оценивание
( балла): каждая вершина соединена не более чем с 2 другими (дерево - бамбук);
( баллов): не более одной вершины соединена с более чем 1 другой вершиной (дерево - ёж);
( балл): ;
( баллов): ;
( балла): ;
( баллов): дополнительных ограничений нет.