trang chủ / đề bài / psumtreelca

Tổng đường đi trên cây (LCA)

Đề bài

Mô tả

Cho một cây có n đỉnh, gốc là đỉnh 1. Đỉnh thứ u có trọng số wu. Cho q truy vấn, mỗi truy vấn gồm hai đỉnh u và v; với mỗi truy vấn, hãy tính tổng trọng số của tất cả các đỉnh nằm trên đường đi đơn giản từ u đến v trên cây (bao gồm cả hai đầu mút u và v).

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và q.
  • Dòng thứ hai chứa n số nguyên w1,w2,…,wn.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên a và b mô tả một cạnh của cây.
  • q dòng cuối, mỗi dòng chứa hai số nguyên u và v mô tả một truy vấn.

Dữ liệu ra

In ra q dòng, mỗi dòng là kết quả của một truy vấn theo thứ tự nhập vào.

Ràng buộc

  • 1≤n,q≤2·105
  • −109≤wu≤109
  • 1≤u,v≤n
  • Dữ liệu cho luôn là một cây hợp lệ.

Ví dụ

Input Output Giải thích
5 4
1 2 3 4 5
1 2
1 3
2 4
2 5
4 5
3 5
1 1
4 3
11
11
1
10
Cây: 1 là gốc, các con 2 và 3; 2 có hai con 4 và 5. Đường 4→5 đi qua 4,2,5 với tổng 4+2+5=11. Đường 3→5 đi qua 3,1,2,5 với tổng 3+1+2+5=11. Đường 1→1 chỉ là đỉnh 1 với tổng 1. Đường 4→3 đi qua 4,2,1,3 với tổng 4+2+1+3=10.
3 2
-5 10 -3
1 2
2 3
1 3
3 1
2
2
Cây là một xích 1−2−3. Đường 1→3 đi qua 1,2,3 với tổng −5+10+(−3)=2.

Ghi chú

Các trọng số có thể âm; kết quả có thể vượt phạm vi 32-bit.

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