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

Cập nhật khoảng cách trên cây cán chổi

Đề bài

Mô tả

Cho một cây có n đỉnh, các đỉnh được đánh số từ 1 đến n. Cây có tính chất đặc biệt: mọi đỉnh khác đỉnh 1 đều có bậc không vượt quá 2. (Nói cách khác, sau khi bỏ đỉnh 1, cây tách thành một số đường thẳng đính vào đỉnh 1.)

Khoảng cách giữa hai đỉnh là số cạnh trên đường đi ngắn nhất giữa chúng.

Ban đầu, mỗi đỉnh chứa giá trị 0. Bạn cần xử lý q truy vấn thuộc một trong hai dạng:

  • 0 v x d — cộng thêm x vào giá trị của tất cả các đỉnh cách đỉnh v không quá d cạnh.
  • 1 v — in ra giá trị hiện tại đang ghi tại đỉnh v.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên uivi — mô tả một cạnh của cây.
  • q dòng tiếp theo, mỗi dòng mô tả một truy vấn theo định dạng nêu trên.

Dữ liệu ra

Với mỗi truy vấn dạng 1 v, in ra giá trị hiện tại tại đỉnh v trên một dòng riêng.

Ràng buộc

  • 2n105
  • 1q105
  • 1ui,vin, uivi
  • 1vn, 1x104, 1d<n
  • Đồ thị đề bài luôn là một cây thỏa mãn tính chất trên.

Ví dụ

Input Output Giải thích
3 6
1 2
1 3
0 3 1 2
0 2 3 1
0 1 5 2
1 1
1 2
1 3
9
9
6
Cây gồm đỉnh 1 là gốc với hai con 23. Sau ba truy vấn cập nhật, đỉnh 1 nhận 1+3+5=9, đỉnh 2 nhận 1+3+5=9, đỉnh 3 nhận 1+5=6 (truy vấn 0 2 3 1 không chạm tới đỉnh 3 vì khoảng cách là 2).
6 11
1 2
2 5
5 4
1 6
1 3
0 3 1 3
0 3 4 5
0 2 1 4
0 1 5 5
0 4 6 2
1 1
1 2
1 3
1 4
1 5
1 6
11
17
11
16
17
11
Cây có một nhánh 1-2-5-4 và hai lá 3, 6 nối thẳng vào 1. Các truy vấn cập nhật ảnh hưởng tới các đỉnh khác nhau tùy vị trí.

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