trang chủ / đề bài / difftree

Cộng đường đi 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. Ban đầu giá trị tại mỗi đỉnh bằng 0.

Có Q thao tác, mỗi thao tác có dạng (u,v,w): cộng w vào giá trị của mọi đỉnh nằm trên đường đi đơn từ u đến v (bao gồm cả u và v).

Sau khi thực hiện đủ Q thao tác, hãy in ra giá trị cuối của từng đỉnh.

Dữ liệu vào

  • Dòng 1: hai số nguyên N và Q.
  • N−1 dòng tiếp theo: mỗi dòng hai số nguyên a và b (1≤a,b≤N, a≠b) mô tả một cạnh nối hai đỉnh a và b.
  • Q dòng tiếp theo: mỗi dòng ba số nguyên u, v, w mô tả một thao tác.

Dữ liệu ra

Một dòng gồm N số nguyên cách nhau bởi dấu cách: giá trị cuối của đỉnh 1,2,…,N.

Ràng buộc

  • 1≤N,Q≤2·105
  • 1≤u,v≤N
  • 1≤w≤109
  • Cho phép u=v (đường đi chỉ chứa một đỉnh).

Ví dụ

Input Output Giải thích
5 2
1 2
1 3
2 4
2 5
4 3 10
5 5 7
10 10 10 10 7 Thao tác 1: đường 4→2→1→3, cộng 10 vào các đỉnh 4,2,1,3 (đỉnh 5 không nằm trên đường). Thao tác 2: đường chỉ gồm đỉnh 5, cộng 7 vào đỉnh 5.
3 3
1 2
2 3
1 3 5
2 3 4
1 1 1
6 9 9 Đỉnh 1 nhận 5+1=6. Đỉnh 2 nhận 5+4=9. Đỉnh 3 nhận 5+4=9.

Ghi chú

  • Đáp số tại mỗi đỉnh có thể lớn (tới khoảng 2·1014), hãy dùng kiểu số nguyên 64-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