BOI 2017 - Cat in a tree

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2300 (p) Thời gian: 10.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một con mèo sống trên một cây có \(N\) đỉnh. Nó sẽ phân định lãnh thổ bằng cách “đánh dấu” một số đỉnh của cây. Khoảng cách giữa hai đỉnh được đánh dấu bất kỳ phải ít nhất là \(D\). Hãy tìm số đỉnh lớn nhất mà con mèo có thể đánh dấu.

Ảnh: Just a kitten in a tree, Zoe Shuttleworth, qua Flickr; CC BY-2.0.

Dữ liệu vào

Dòng đầu tiên chứa hai số nguyên \(N\)\(D\). Đỉnh \(0\) là gốc của cây.

Tiếp theo là \(N-1\) dòng. Dòng thứ \(i\), với \(1 \le i \le N-1\), chứa một số nguyên \(x_i\) thỏa mãn \(0 \le x_i < i\), cho biết đỉnh \(x_i\) được nối với đỉnh \(i\).

Dữ liệu ra

In ra một số nguyên: số đỉnh lớn nhất có thể được đánh dấu.

Ràng buộc

  • \(1 \le N, D \le 2 \cdot 10^5\).
  • \(0 \le x_i < i\) với mọi \(1 \le i \le N-1\).

Phân nhóm

Bạn chỉ nhận được điểm của một nhóm khi vượt qua tất cả các test trong nhóm đó. Tổng điểm là tổng điểm của các nhóm.

  • Nhóm 1 (11 điểm): \(N \le 18\).
  • Nhóm 2 (40 điểm): \(N \le 1\,500\).
  • Nhóm 3 (49 điểm): Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
4 3
0
0
1
Output
2

Ví dụ 2

Input
3 1000
0
0
Output
1

Nguồn

Baltic Olympiad in Informatics 2017, ngày thi thứ 2.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: