trang chủ / đề bài / psumtree

Tổng tiền tố trên cây

Đề bài

Mô tả

Cho một cây có n đỉnh, đánh số từ 1 đến n, gốc tại đỉnh 1. Mỗi đỉnh u có một trọng số wu (có thể âm). Cây được mô tả bởi n−1 cạnh không định hướng.

Bạn cần xử lý q truy vấn. Với mỗi truy vấn cho một đỉnh u, hãy tính tổng trọng số của tất cả các đỉnh nằm trên đường đi từ gốc (đỉnh 1) đến đỉnh u, bao gồm cả hai đầu mút.

Dữ liệu vào

  • Dòng đầu: số nguyên n — số đỉnh.
  • Dòng thứ hai: n số nguyên w1,w2,…,wn — trọng số các đỉnh.
  • n−1 dòng tiếp theo, mỗi dòng gồm hai số nguyên u,v (1≤u,v≤n, u≠v) — mô tả một cạnh không định hướng của cây.
  • Dòng tiếp theo: số nguyên q — số truy vấn.
  • q dòng tiếp theo, mỗi dòng gồm một số nguyên u (1≤u≤n) — đỉnh cần truy vấn.

Dữ liệu ra

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

Ràng buộc

  • 1≤n,q≤2·105
  • −109≤wu≤109
  • Đồ thị đã cho được đảm bảo là một cây.

Ví dụ

Input Output Giải thích
5
1 2 3 4 5
1 2
1 3
2 4
2 5
3
4
5
3
7
8
4
Cây có gốc 1. Đường đi 1→2→4 có tổng 1+2+4=7. Đường 1→2→5 có tổng 1+2+5=8. Đường 1→3 có tổng 1+3=4.
4
-5 10 -3 7
1 2
2 3
3 4
4
1
2
3
4
-5
5
2
9
Cây là một đường thẳng 1−2−3−4. Tổng tiền tố lần lượt là −5,5,2,9.

Ghi chú

Vì kết quả có thể rất lớn, hãy sử dụng kiểu số nguyên 64-bit (long long trong C++).

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