trang chủ / bài tập / proptree

Cây lan truyền

Đề bài

Mô tả

Cho một cây có n đỉnh đánh số từ 1 đến n, gốc là đỉnh 1. Mỗi đỉnh i có một giá trị ban đầu ai.

Cây có một tính chất đặc biệt: khi cộng giá trị val vào đỉnh i, thì giá trị val sẽ được cộng vào tất cả các con trực tiếp của i. Tiếp theo, giá trị (val)=val lại được cộng vào các con của các con đó, và cứ tiếp tục lan truyền như vậy đến hết cây con của i. Nói cách khác, nếu đỉnh u nằm trong cây con gốc i và độ sâu của u trong cây ban đầu chênh với ik cạnh, thì u nhận thêm (1)k·val.

Bạn cần xử lý m truy vấn thuộc một trong hai dạng:

  • 1 x val — cộng val vào giá trị của đỉnh x (kèm hiệu ứng lan truyền nêu trên).
  • 2 x — in ra giá trị hiện tại của đỉnh x.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an — giá trị ban đầu của các đỉnh.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số viui mô tả một cạnh của cây.
  • m dòng cuối, mỗi dòng chứa một truy vấn theo định dạng đã mô tả.

Dữ liệu ra

Với mỗi truy vấn loại 2, in giá trị tương ứng trên một dòng riêng, theo đúng thứ tự xuất hiện trong dữ liệu vào.

Ràng buộc

  • 1n,m2·105
  • 1ai1000
  • 1vi,uin
  • 1xn, 1val1000 cho mọi truy vấn.

Ví dụ

Input Output Giải thích
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
3
3
0
Giá trị ban đầu [1,2,1,1,2]. Sau 1 2 3: đỉnh 2 tăng 3, các con 4,5 giảm 3[1,5,1,2,1]. Sau 1 1 2: đỉnh 1 tăng 2, các con 2,3 giảm 2, các cháu 4,5 tăng 2[3,3,1,0,1]. Ba truy vấn loại 2 trả về 3,3,0.
10 10
137 197 856 768 825 894 86 174 218 326
7 8
4 7
8 9
7 10
1 2
2 4
3 6
3 5
2 3
1 9 624
2 1
2 4
1 6 505
1 8 467
1 3 643
2 1
1 8 631
2 4
1 7 244
137
768
137
768
Cập nhật tại 9, 6, 8 chỉ ảnh hưởng tới cây con tương ứng và không đụng tới 1 hoặc 4. Cập nhật tại 3 chỉ ảnh hưởng tới cây con {3,5,6} — vẫn không chạm đến 14.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0