Tổng tiền tố trên cây
Đề bài
Mô tả
Cho một cây có đỉnh, đánh số từ đến , gốc tại đỉnh . Mỗi đỉnh có một trọng số (có thể âm). Cây được mô tả bởi cạnh không định hướng.
Bạn cần xử lý truy vấn. Với mỗi truy vấn cho một đỉnh , 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 ) đến đỉnh , bao gồm cả hai đầu mút.
Dữ liệu vào
- Dòng đầu: số nguyên — số đỉnh.
- Dòng thứ hai: số nguyên — trọng số các đỉnh.
- dòng tiếp theo, mỗi dòng gồm hai số nguyên (, ) — mô tả một cạnh không định hướng của cây.
- Dòng tiếp theo: số nguyên — số truy vấn.
- dòng tiếp theo, mỗi dòng gồm một số nguyên () — đỉnh cần truy vấn.
Dữ liệu ra
In ra dòng, mỗi dòng là kết quả của truy vấn tương ứng.
Ràng buộc
- Đồ 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 . Đường 1→2→5 có tổng . Đường 1→3 có tổng . |
| 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 . Tổng tiền tố lần lượt là . |
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