Olympic chuyên KHTN 2026 - TREECOVER

Xem dạng PDF

Gửi bài giải

Điểm: 60,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho một cây gồm ~n~ đỉnh. Với một tập hợp các đỉnh ~A \subseteq \{1, 2, ..., n\}~, gọi ~g(A)~ là giá trị ~k~ nhỏ nhất sao cho tồn tại ~k~ đường đi trên cây thỏa mãn các điều kiện sau:

  • Mỗi đường đi không đi qua bất kỳ cạnh nào quá một lần (đường đi đơn).

  • Mỗi đỉnh thuộc tập ~A~ đều được đi qua bởi ít nhất một đường đi trong tập ~k~ đường đi đó.

Ban đầu, ta có một tập hợp ~S~ rỗng. Có ~q~ truy vấn, mỗi truy vấn bao gồm một đỉnh ~u~.

  • Nếu ~u \in S~, thực hiện xóa ~u~ khỏi tập ~S~.

  • Nếu ~u \notin S~, thực hiện thêm ~u~ vào tập ~S~.

Yêu cầu: Sau mỗi truy vấn, hãy in ra giá trị ~g(S)~.

Input

  • Dòng đầu tiên chứa hai số nguyên dương ~n~ và ~q~ ~(n, q \le 3 \times 10^5)~.

  • ~n-1~ dòng tiếp theo, mỗi dòng chứa hai số nguyên ~u, v~ mô tả một cạnh của cây.

  • ~q~ dòng tiếp theo, mỗi dòng chứa một số nguyên ~u~ mô tả đỉnh được thay đổi trong tập ~S~.

Output

In ra ~q~ dòng, mỗi dòng là giá trị ~g(S)~ sau khi thực hiện truy vấn tương ứng.

Scoring

Subtask Điểm Ràng buộc
1 ~20\%~ ~n, q \le 10~
2 ~10\%~ ~n, q \le 3000~. Đỉnh ~1~ nối với tất cả các đỉnh còn lại
3 ~10\%~ ~n, q \le 3000~. Đỉnh ~1~ luôn nằm trong tập ~S~ sau mọi truy vấn
4 ~10\%~ ~n, q \le 3000~
5 ~20\%~ ~n, q \le 10^5~
6 ~30\%~ Không có điều kiện gì thêm

Sample Input 1

3 2
1 2
2 3
1
3

Sample Output 1

1
1

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.