Đường đi ngắn nhất trên cây
Xem PDF
Đ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\) và \(k\).
- \(n\) dòng tiếp theo, dòng thứ \(i\) gồm \(2\) số nguyên \(x\) và \(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