Cho một đồ thị vô hướng là cây gồm \(N\) đỉnh. Xét hai tập đỉnh \(A\) và \(B\), ban đầu tập \(A\) chứa toàn bộ \(N\) đỉnh trên cây, còn tập \(B\) rỗng.
Gọi khoảng cách giữa hai đỉnh \(u, v\) là số cạnh ít nhất cần đi qua để đi từ \(u\) đến \(v\) trên cây. Đường kính của một tập đỉnh được định nghĩa là khoảng cách xa nhất giữa hai đỉnh bất kỳ trong tập đó.
Bạn được yêu cầu xử lý \(Q\) truy vấn. Truy vấn thứ \(i\) là một số nguyên \(v_i\), tương ứng với việc xoá đỉnh \(v_i\) khỏi tập \(A\) và thêm nó vào tập \(B\).
Sau mỗi truy vấn, hãy in ra đường kính của tập \(A\) và tập \(B\).
Input
- Dòng đầu tiên chứa hai số nguyên \(N\) và \(Q\) \((1 \le N \le 4 \cdot 10^5, 1 \le Q < N)\) --- số đỉnh của cây và số truy vấn.
- \(N - 1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a, b\) \((1 \le a, b \le N)\) mô tả một cạnh nối giữa hai đỉnh \(a\) và \(b\).
- Dòng tiếp theo gồm \(Q\) dòng, dòng thứ \(i\) chứa một số nguyên \(v_i\) \((1 \le v_i \le N)\) --- truy vấn thứ \(i\).
Output
- Gồm \(Q\) dòng, dòng thứ \(i\) in ra hai số nguyên --- đường kính của tập \(A\) và đường kính của tập \(B\) sau truy vấn thứ \(i\).
Example
Test 1
Input
5 4
1 2
2 4
1 3
3 5
2
1
4
3
Output
4 0
4 1
1 2
0 3
Scoring
- Subtask 1 (20 điểm): \(N, Q \le 500\)
- Subtask 2 (20 điểm): \(N \le 2 \cdot 10^4\), \(Q \le 10^3\)
- Subtask 3 (20 điểm): Mỗi đỉnh có tối đa hai cạnh nối với nó.
- Subtask 4 (20 điểm): Khoảng cách giữa hai đỉnh xa nhất trong cây không vượt quá 40.
- Subtask 5 (20 điểm): Không có ràng buộc gì thêm.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.