trang chủ / đề bài / gr13_cover

Đặt bảo vệ trên cây

Đề bài

Mô tả

Một khu dân cư có n ngôi nhà đánh số từ 1 đến n, nối với nhau bởi n−1 con đường sao cho từ một nhà có thể đi tới mọi nhà khác (các nhà và con đường tạo thành một cây). Thuê bảo vệ đứng ở nhà v tốn cv đồng. Một bảo vệ đứng ở nhà v trông được chính nhà v và mọi nhà nối trực tiếp với v bởi một con đường.

Hãy chọn các nhà để đặt bảo vệ sao cho nhà nào cũng được ít nhất một bảo vệ trông, với tổng chi phí nhỏ nhất.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n.
  • Dòng thứ hai chứa n số nguyên c1,c2,…,cn.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u,v cho biết có con đường nối nhà u và nhà v.

Dữ liệu ra

In ra một số nguyên là tổng chi phí nhỏ nhất.

Ràng buộc

  • 1≤n≤2·105
  • 1≤cv≤109
  • 1≤u,v≤n, u≠v

Ví dụ

Input Output Giải thích
6
5 3 4 2 10 1
1 2
2 3
2 4
4 5
4 6
5 Đặt bảo vệ ở nhà 2 (trông nhà 1,2,3,4) và nhà 4 (trông nhà 2,4,5,6), tổng chi phí 3+2=5.
4
1 50 50 1
1 2
2 3
3 4
2 Bảo vệ ở nhà 1 trông nhà 1,2; bảo vệ ở nhà 4 trông nhà 3,4.

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