#58. Xóa đỉnh cây (Mã bài: TREDEL)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một cây có n đỉnh, gốc là đỉnh 1 . Có q truy vấn, mỗi truy vấn gồm một đỉnh v và một số nguyên k .

Để xử lý một truy vấn, bạn có thể xóa bất kỳ đỉnh nào từ cây theo bất kỳ thứ tự nào, số lượng xoá tuỳ ý, ngoại trừ đỉnh gốc và đỉnh 𝑣 . Khi một đỉnh bị xóa, các con của nó trở thành con của cha nó. Bạn cần xử lý truy vấn sao cho giá trị 𝑐(𝑣) − 𝑚 \times 𝑘 là lớn nhất có thể, trong đó:

  • c(𝑣) là số con còn lại của đỉnh v sau khi xử lý truy vấn.
  • m là số đỉnh bạn đã xóa.

Yêu cầu: Với mỗi truy vấn, in ra giá trị lớn nhất mà bạn có thể đạt được.

Chú ý: Các truy vấn là độc lập (tức là các thay đổi bạn thực hiện với cây khi xử lý một truy vấn không ảnh hưởng đến cây ở các truy vấn khác).

Dữ liệu:

  • Dòng đầu: số nguyên n ( 1 \le n \le 2 \times 10^5 ).
  • n-1 dòng tiếp theo: mỗi dòng chứa hai số x_i, y_i — cạnh của cây.
  • Dòng tiếp theo: số nguyên q .
  • q dòng tiếp theo: mỗi dòng chứa hai số v_j, k_j .

Kết quả: q dòng, mỗi dòng là kết quả của truy vấn tương ứng.

Ví dụ:

Dữ liệu:

5
1 5
2 3
3 5
4 5
3
1 0
5 2
3 2

Kết quả:

2
2
1

Giải thích:

Hình minh họa

  • v=1, k=0 : xóa các đỉnh 2 5 , đỉnh 1 còn lại 2 con (các đỉnh 3 , 4 ), và điểm số là 2 - 2 × 0 = 2 .
  • v = 5, k = 2 : Không xóa đỉnh nào, đỉnh 5 còn lại 2 con (các đỉnh 3 , 4 ), và điểm số là 2 - 0 × 2 = 2 .
  • v = 3, k = 2 : Không xóa đỉnh nào, đỉnh 3 1 con (đỉnh 2 ), điểm số là 1 - 0 × 2 = 1 .

Giới hạn:

  • Subtask #1: 20% số điểm với k = 0 cho mọi truy vấn.
  • Subtask #2: 20% số điểm với n, q \le 10{,}000 .
  • Subtask #3: 60% số điểm còn lại không có ràng buộc thêm.