Codeforces Global Round 13 |
---|
Закончено |
Пусть $$$F_k$$$ обозначает $$$k$$$-й член последовательности Фибоначчи, определенной следующим образом:
Вам дано дерево с $$$n$$$ вершинами. Напомним, что дерево — это связный неориентированный граф без циклов.
Дерево называется Фиб-деревом, если его количество вершин равно $$$F_k$$$ для некоторого $$$k$$$, и выполняется хотя бы одно из следующих условий:
Определите, является ли данное дерево Фиб-деревом.
В первой строке входных данных содержит одно целое число $$$n$$$ ($$$1 \leq n \leq 2 \cdot 10^5$$$) — количество вершин в дереве.
Далее следуют $$$n-1$$$ строк, каждая из которых содержит два целых числа $$$u$$$ и $$$v$$$ ($$$1\leq u,v \leq n$$$, $$$u \neq v$$$), обозначающие ребро между вершинами $$$u$$$ и $$$v$$$. Гарантируется, что данные ребра образуют дерево.
Выведите «YES», если данное дерево является Фиб-деревом, или «NO», если не является.
Ответ можно вывести в любом регистре. Например, если ответ «YES», то вывод «Yes» или «yeS» также будет считаться правильным ответом.
3 1 2 2 3
YES
5 1 2 1 3 1 4 1 5
NO
5 1 3 1 2 4 5 3 4
YES
В первом примере можно удалить ребро $$$(1, 2)$$$, и дерево будет разбито на $$$2$$$ дерева размера $$$1$$$ и $$$2$$$ соответственно. Любое дерево размера $$$2$$$ является Фиб-деревом, так как его можно разбить на $$$2$$$ дерева размером $$$1$$$.
Во втором примере, независимо от того, какое ребро мы удаляем, дерево будет разбито на $$$2$$$ дерева размера $$$1$$$ и $$$4$$$. Поскольку $$$4$$$ не равняется $$$F_k$$$ ни для какого $$$k$$$, это не Фиб-дерево.
В третьем примере, вот один из возможных порядков удаления ребер, чтобы все деревья в процессе были Фиб-деревьями: $$$(1, 3), (1, 2), (4, 5), (3, 4)$$$.
Название |
---|