Codeforces 383C - Giá trị lan trên cây

Xem PDF




Thời gian:
Python 3 3.0s

Dạng bài
Điểm: 1800 Thời gian: 2.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho cây \(n\) đỉnh, gốc \(1\), giá trị ban đầu của đỉnh \(i\) là \(a_i\). Xử lý \(m\) thao tác:

  • 1 x val: cộng \(val\) vào đỉnh \(x\), trừ \(val\) ở các con của \(x\), cộng \(val\) ở các cháu, rồi tiếp tục đổi dấu qua mỗi cạnh đi xuống. Chỉ cây con của \(x\) bị đổi.
  • 2 x: in giá trị hiện tại của đỉnh \(x\).

Dữ liệu vào

  • Dòng đầu chứa \(n,m\); dòng tiếp theo chứa \(a_1,\ldots,a_n\).
  • \(n-1\) dòng tiếp theo chứa hai đầu của từng cạnh.
  • \(m\) dòng cuối chứa các thao tác theo định dạng trên.

Dữ liệu ra

Với mỗi thao tác loại \(2\), in đáp án trên một dòng theo thứ tự nhập.

Ràng buộc

  • \(1\le n,m\le200\,000\).
  • \(1\le a_i,val\le1000\).
  • Mọi số hiệu đỉnh thuộc \([1,n]\); các cạnh tạo thành một cây.

Ví dụ

Ví dụ 1

Input
5 5
1 2 1 1 2
1 2
1 3
2 4
2 5
1 2 3
1 1 2
2 1
2 2
2 4
Output
3
3
0
Giải thích

Sau hai cập nhật, giá trị các đỉnh lần lượt là \([3,3,-1,0,1]\).

Nguồn

Codeforces 383C - Giá trị lan trên cây.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.