Cây Fibonacci

Đề bài

Mô tả

Gọi Fk là số Fibonacci thứ k, định nghĩa như sau:

  • F0=F1=1;
  • Fn+2=Fn+1+Fn với mọi số nguyên n≥0.

Cho một cây gồm n đỉnh. Cây này được gọi là cây Fibonacci nếu số đỉnh của nó bằng Fk với một chỉ số k nào đó, đồng thời thoả mãn ít nhất một trong hai điều kiện sau:

  • Cây chỉ gồm đúng 1 đỉnh;
  • Có thể xoá một cạnh nào đó của cây để tách nó thành hai cây Fibonacci.

Hãy xác định cây đã cho có phải là cây Fibonacci hay không.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số đỉnh của cây.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u và v, mô tả một cạnh nối đỉnh u với đỉnh v.

Dữ liệu đảm bảo các cạnh đã cho tạo thành một cây.

Dữ liệu ra

In ra YES nếu cây đã cho là cây Fibonacci, ngược lại in ra NO.

Ràng buộc

  • 1≤n≤2·105
  • 1≤u,v≤n, u≠v

Ví dụ

Input Output Giải thích
3
1 2
2 3
YES 3=F3. Xoá cạnh (1,2) tách cây thành hai phần có 1 và 2 đỉnh. Phần 2 đỉnh lại tách được thành hai phần 1 đỉnh, nên cả hai đều là cây Fibonacci.
5
1 2
1 3
1 4
1 5
NO 5=F4, nhưng đây là hình sao: xoá cạnh nào cũng tách thành 1 và 4 đỉnh, mà 4 không phải số Fibonacci.
5
1 3
1 2
4 5
3 4
YES Cây là đường đi 2−1−3−4−5. Xoá cạnh (3,4) được hai phần 3 và 2 đỉnh, cả hai đều là cây Fibonacci.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0