Đường đi ngắn nhất trên cây

Xem PDF



Tác giả:
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, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Sau khi tham dự IOI và OLPSV, Nguyên chuyển đến một ngôi nhà mới. Khu nhà mới của Nguyên có \(n\) người bạn hàng xóm (\(n \le 2 \cdot 10^5\)). Vì dễ bị nhầm nên Nguyên đánh số các bạn ấy từ \(1\) đến \(n\). Giữa các ngôi nhà có đường đi tạo thành cây. Khoảng cách giữa hai căn nhà kề nhau là \(1\) đơn vị. Có \(k\) cuộc hẹn (\(k \le n/2\)) được Nguyên đưa ra để làm quen với các bạn mới. Để tính toán chi phí mời các bạn, Nguyên muốn biết xem khoảng cách xa nhất của \(2\) ngôi nhà trong một cuộc hẹn là bao nhiêu? Bạn hãy giúp Nguyên giải quyết vấn đề này.

Input

  • Dòng \(1\) gồm \(2\) số nguyên dương \(n\)\(k\).
  • \(n\) dòng tiếp theo, dòng thứ \(i\) gồm \(2\) số nguyên \(x\)\(y\). Trong đó \(x\) là thứ tự của cuộc hẹn mà bạn thứ \(i\) tham gia, \(y\) là nhà hàng xóm của bạn thứ \(i\). Nếu \(y=0\) thì đó là gốc của khu dân cư (có thể hiểu là gốc của cây).

Output

  • Gồm \(k\) dòng, dòng thứ \(i\) thể hiện đường đi xa nhất tìm được giữa \(2\) ngôi nhà của \(2\) người bạn trong cuộc hẹn thứ \(i\).

Constraints

  • \(n \le 2 \cdot 10^5\)
  • \(k \le n/2\)
  • \(1 \le x \le k\)
  • \(0 \le y \le n\)

Example

Test 1

Input
6 2
1 3
2 1
1 0
2 1
2 1
1 5
Output
3
2

Scoring

  • Subtask \(1\) (\(40\%\) số điểm): \(n, k \le 1000\).
  • Subtask \(2\) (\(60\%\) số điểm): Không có ràng buộc gì thêm.

Bình luận

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

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