trang chủ / đề bài / dn_tst_23_capital

CAPITAL

Đề bài

Mô tả

Vương quốc có n thành phố (đánh số từ 1 đến n) và n−1 con đường hai chiều, đảm bảo đi lại được giữa mọi cặp thành phố. Thành phố x được gọi là quản lý thành phố y nếu x nằm trên đường đi đơn từ y đến 1 (kể cả hai đầu mút, nên mỗi thành phố quản lý chính nó và thành phố 1 quản lý mọi thành phố). Sản lượng lương thực tại thành phố x là wx.

Quốc vương muốn chọn ra một thành phố để xây dựng kho dự trữ. Chi phí vận chuyển lương thực nếu xây dựng kho dự trữ tại u là

∑v=1nwv×d(v,u),

với d(v,u) là số cạnh trên đường đi đơn từ v đến u.

Có Q thay đổi cho sản lượng được báo cáo, mỗi thay đổi có dạng 1 u c hoặc 2 u c, tương ứng là tăng wu lên c đơn vị, hoặc tăng wv lên c đơn vị với mọi thành phố v được quản lý bởi u. Giá trị c có thể âm (khi đó sản lượng giảm đi |c| đơn vị).

Yêu cầu: Sau mỗi thay đổi, cần tìm thành phố u để xây dựng kho dự trữ sao cho tổng chi phí vận chuyển lương thực là nhỏ nhất; nếu có nhiều u như vậy thì chọn u nhỏ nhất.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên dương n và Q;
  • Dòng thứ hai chứa n số nguyên w1,w2,…,wn;
  • Mỗi dòng trong số n−1 dòng tiếp theo chứa hai số nguyên u v mô tả một con đường nối hai thành phố u và v;
  • Mỗi dòng trong số Q dòng tiếp theo chứa ba số nguyên t u c (t∈{1,2}, 1≤u≤n) mô tả một thay đổi.

Dữ liệu ra

Gồm Q dòng, dòng thứ i là chỉ số của thành phố được chọn sau thay đổi thứ i.

Ràng buộc

  • 1≤n,Q≤105;
  • 1≤wi≤106;
  • |c|≤106;
  • Dữ liệu đảm bảo sau mỗi thay đổi, sản lượng của mọi thành phố vẫn là số nguyên dương (wv≥1 với mọi v).

Subtasks

  • Có 12% số test với n,Q≤5000;
  • Có 16% số test có cạnh nối từ x đến x−1 với mọi 2≤x≤n;
  • Có 16% số test có cạnh nối từ x đến ⌊x/2⌋ với mọi 2≤x≤n;
  • Có 20% số test không có thay đổi loại 2;
  • Có 36% số test với ràng buộc gốc.

Ví dụ

Input Output Giải thích
5 3
1 3 2 1 4
1 2
1 3
2 4
2 5
1 2 2
2 3 4
1 1 5
2
2
1
Sau thay đổi thứ nhất w=(1,5,2,1,4), chi phí tại 2 là 10, tại 1 là 17. Sau thay đổi thứ hai, thành phố 3 chỉ quản lý chính nó nên w=(1,5,6,1,4), chi phí tại 2 là 18, tại 1 là 21. Sau thay đổi thứ ba w=(6,5,6,1,4), chi phí tại 1 là 21, tại 2 là 23.
4 3
1 1 1 1
1 4
4 2
1 3
1 2 2
1 3 4
1 3 -3
2
1
4
Sau thay đổi thứ nhất w=(1,3,1,1), chi phí tại 2 và tại 4 đều bằng 6 (nhỏ nhất) nên chọn 2. Sau thay đổi thứ hai w=(1,3,5,1), chi phí tại 1 và tại 3 đều bằng 12 nên chọn 1. Sau thay đổi thứ ba (c=−3) w=(1,3,2,1), chi phí tại 4 là 8, tại 1 và 2 là 9.

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