trang chủ / đề bài / gr14_subsum

Tổng cây con với gốc thay đổi

Đề bài

Mô tả

Cho một cây gồm n đỉnh đánh số từ 1 đến n, đỉnh i mang giá trị ai. Các cạnh được cho theo thứ tự và chiều bất kỳ.

Khi chọn một đỉnh r làm gốc, cây con của đỉnh v gồm v và mọi đỉnh mà đường đi từ đỉnh đó tới r đi qua v. Nói riêng, nếu r=v thì cây con của v là toàn bộ cây.

Hãy xử lý q thao tác thuộc một trong hai loại:

  • 1 v x: gán av=x.
  • 2 r v: coi r là gốc, in ra tổng giá trị các đỉnh trong cây con của v.

Mỗi thao tác loại 2 chỉ chọn gốc cho riêng nó, không ảnh hưởng tới các thao tác sau.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n và q.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u,v cho biết có cạnh nối đỉnh u và đỉnh v.
  • q dòng tiếp theo, mỗi dòng mô tả một thao tác theo định dạng trên.

Dữ liệu ra

Với mỗi thao tác loại 2, in ra đáp án trên một dòng.

Ràng buộc

  • 1≤n≤5·104
  • 1≤q≤5·104, có ít nhất một thao tác loại 2.
  • |ai|,|x|≤109
  • 1≤u,v,r≤n, với các cạnh thì u≠v.

Ví dụ

Input Output Giải thích
6 6
3 1 4 1 5 9
1 2
1 3
2 4
2 5
3 6
2 1 2
2 4 2
2 2 2
1 4 10
2 4 2
2 6 1
7
22
23
22
19
Gốc 1: cây con của 2 là {2,4,5}, tổng 7. Gốc 4: cây con của 2 là mọi đỉnh trừ 4, tổng 23−1=22. Sau khi gán a4=10, tổng cả cây là 32; gốc 6: cây con của 1 là {1,2,4,5}, tổng 19.
4 4
-5 2 7 -1
2 1
3 2
4 3
2 1 3
2 4 2
1 1 6
2 3 2
6
-3
8
Cây là đường đi 1−2−3−4. Gốc 4: cây con của 2 là {1,2}.

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0