#75. Điền cây (Mã bài: FTREE)

Bộ nhớ: 512 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 gồm n đỉnh, đỉnh 1 là gốc. Ban đầu chỉ có đỉnh 1 được điền số với giá trị r .
Nhiệm vụ: đếm số cách điền các số không âm vào các đỉnh chưa được điền sao cho:

  • Với mọi đỉnh u , số trên đỉnh u không nhỏ hơn tổng số trên các đỉnh con trực tiếp của u .

Q truy vấn, mỗi truy vấn thuộc một trong hai dạng:

  • 1 u v: điền số v vào đỉnh u (đỉnh chưa được điền, u > 1, 0 \le v \le r ).
  • 2 u: xoá số trên đỉnh u (đỉnh đang có số, u > 1 ).

Sau mỗi truy vấn, tính số cách điền hợp lệ (mod 10^9+7 ).

Dữ liệu:

  • Dòng đầu: hai số n, r ( 1 \le n \le 2 \times 10^5, 1 \le r \le 3 \times 10^5 ).
  • n-1 dòng tiếp theo: mỗi dòng chứa hai số u, v — cạnh của cây.
  • Dòng tiếp theo: số nguyên Q ( 1 \le Q \le 2 \times 10^5 ).
  • Q dòng cuối: mỗi dòng là một truy vấn dạng 1 u v hoặc 2 u.

Kết quả: Ghi ra Q+1 dòng: dòng đầu là số cách điền ban đầu, các dòng sau là kết quả sau mỗi truy vấn.

Ví dụ:

Dữ liệu:

3 2
1 2
2 3
1
1 2 1

Kết quả:

6
2

Giới hạn:

  • Subtask #1: 10\% số điểm với Q = 0 .
  • Subtask #2: 20\% số điểm với n,Q \le 3000 .
  • Subtask #3: 20\% số điểm chỉ có thao tác loại 1.
  • Subtask #4: 20\% số điểm với chiều cao cây không quá n .
  • Subtask #5: 30\% số điểm còn lại không có ràng buộc thêm.