CF1491E.Fib-tree

提高+/省选-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Let FkF_k denote the kk-th term of Fibonacci sequence, defined as below:

  • F0=F1=1F_0 = F_1 = 1
  • for any integer n≥0n \geq 0, Fn+2=Fn+1+FnF_{n+2} = F_{n+1} + F_n

You are given a tree with nn vertices. Recall that a tree is a connected undirected graph without cycles.

We call a tree a Fib-tree, if its number of vertices equals FkF_k for some kk, and at least one of the following conditions holds:

  • The tree consists of only 11 vertex;
  • You can divide it into two Fib-trees by removing some edge of the tree.

Determine whether the given tree is a Fib-tree or not.

设 FkF_k 表示斐波那契数列的第 kk 项,其定义如下:

  • F0=F1=1F_0 = F_1 = 1
  • 对任意整数 n≥0n \geq 0,有 Fn+2=Fn+1+FnF_{n+2} = F_{n+1} + F_n

给定一棵包含 nn 个顶点的树。回忆一下,树是一种无环的连通无向图。

若一棵树满足以下条件,则称其为斐波那契树(Fib-tree):

  • 其顶点数等于某个 kk 对应的 FkF_k;
  • 并且满足以下至少一个条件:
    • 该树仅含 11 个顶点;
    • 存在某条边,将其删除后可将原树划分为两棵斐波那契树。

请判断给定的树是否为斐波那契树。

输入格式

The first line of the input contains a single integer nn (1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5) — the number of vertices in the tree.

Then n−1n-1 lines follow, each of which contains two integers uu and vv (1≤u,v≤n1\leq u,v \leq n, u≠vu \neq v), representing an edge between vertices uu and vv. It's guaranteed that given edges form a tree.

输入的第一行包含一个整数 nn(1≤n≤2⋅1051 \leq n \leq 2 \cdot 10^5)——树中顶点的数量。

接下来是 n−1n-1 行,每行包含两个整数 uu 和 vv(1≤u,v≤n1\leq u,v \leq n,u≠vu \neq v),表示顶点 uu 与顶点 vv 之间的一条边。保证所给的边构成一棵树。

输出格式

Print "YES" if the given tree is a Fib-tree, or "NO" otherwise.

You can print your answer in any case. For example, if the answer is "YES", then the output "Yes" or "yeS" will also be considered as correct answer.

如果给定的树是一棵 Fib-树,则输出 “YES”,否则输出 “NO”。

您可以以任意大小写形式输出答案。例如,若正确答案是 “YES”,则输出 “Yes” 或 “yeS” 也被视为正确答案。

输入输出样例

  • 输入#1

    3
    1 2
    2 3

    输出#1

    YES
  • 输入#2

    5
    1 2
    1 3
    1 4
    1 5

    输出#2

    NO
  • 输入#3

    5
    1 3
    1 2
    4 5
    3 4

    输出#3

    YES

说明/提示

In the first sample, we can cut the edge (1,2)(1, 2), and the tree will be split into 22 trees of sizes 11 and 22 correspondently. Any tree of size 22 is a Fib-tree, as it can be split into 22 trees of size 11.

In the second sample, no matter what edge we cut, the tree will be split into 22 trees of sizes 11 and 44. As 44 isn't FkF_k for any kk, it's not Fib-tree.

In the third sample, here is one possible order of cutting the edges so that all the trees in the process are Fib-trees: (1,3),(1,2),(4,5),(3,4)(1, 3), (1, 2), (4, 5), (3, 4).

在第一个样例中,我们可以切断边 (1,2)(1, 2),此时树将被分割为两棵大小分别为 11 和 22 的子树。任何大小为 22 的树都是 Fib-树,因为它可以进一步被分割为两棵大小均为 11 的子树。

在第二个样例中,无论切断哪条边,树都将被分割为两棵大小分别为 11 和 44 的子树。由于 44 不是任意 kk 对应的斐波那契数 FkF_k,因此它不是 Fib-树。

在第三个样例中,以下是一种可行的删边顺序,使得过程中出现的所有树均为 Fib-树:(1,3), (1,2), (4,5), (3,4)(1, 3),\ (1, 2),\ (4, 5),\ (3, 4)。

输入解题思路,AI测评打分。不知道怎么写?

首页