SpringBear sống trong một khu rừng được chia thành ~n~ vùng khác nhau đánh số từ ~1~ tới ~n~. Các vùng khác nhau phát triển các loại sinh vật khác nhau là nguồn thức ăn phong phú cho SpringBear. Vốn là chú gấu có phương châm sống để ăn, SpringBear lên kế hoạch trong ~k~ ngày, mỗi ngày sẽ tới một số vùng để hưởng thức các loại mỹ vị ở đó. Tuy nhiên, vì thân hình mũm mỉm của mình mà cậu ta khá quan ngại về quãng đường mà mình phải di chuyển giữa các vùng.
Hãy giúp SpringBear xác định khoảng cách lớn nhất giữa hai vùng mà cậu ta tới để dùng bữa trong một ngày. Biết rằng ~n~ vùng trong khu rừng kết nối với nhau bằng ~n-1~ đường hai chiều và các con đường có chiều dài là ~1~ đơn vị.
Input
- Dòng đầu chứa hai số nguyên dương ~n~ và ~k~ là số vùng khác nhau và số ngày mà SpringBear đã lên kết hoạch.
- ~n~ dòng tiếp theo, dòng thứ ~i~ gồm hai số ~x~ và ~y~. Trong đó ~x~ là ngày mà SpringBear đến vùng ~i~ để dùng bữa, ~y~ là vùng kề với vùng ~i~ (~y = 0~ được hiểu là vùng ~i~ không có đường kết nối đến vùng mới).
Output
Gồm ~k~ dòng, dòng thứ ~i~ thể hiện khoảng cách lớn nhất giữa hai vùng mà SpringBear sẽ tới trong ngày thứ ~i~.
Scoring
- Có ~42\%~ điểm có ~n \le 1000~.
- Trong tất cả các trường hợp có ~n \le 2\times10^5~, ~k \le \frac{n}{2}~
Sample Input
6 2
1 3
2 1
1 0
2 1
2 1
1 5
Sample Output
3
2
Notes
- Ngày thứ nhất, SpringBear sẽ đi tới 3 vùng là ~1, 3~ và ~6~. Khoảng các xa nhất giữa hai vùng là 3 (giữa vùng ~3~ và vùng ~6~).
- Ngày thứ hai, SpringBear sẽ đi tới các vùng còn lại. Khoảng cách xa nhất giữa hai vùng là 2.
Comments
Nếu chán đọc, mọi người có thể xem video về LCA chi tiết và dễ hỉu (có code kèm theo):
1. LCA là gì
2. Binary Lifting
3. Tìm dist 2 điểm u và v trong O(logN)
Các video đều là tiếng Anh và giọng Ấn Độ nên hơi khó nghe hụ hụ