trang chủ / đề bài / vtc03_forest

Trồng rừng

Đề bài

Mô tả

Một vùng đồi có n lô đất, đánh số từ 1 đến n, nối với nhau bởi n−1 lối mòn sao cho từ mỗi lô có thể đi tới mọi lô khác (các lô và lối mòn tạo thành một cây). Nếu trồng rừng trên lô i, ban quản lý thu được giá trị ai; giá trị này có thể âm (lô đất xấu, trồng sẽ lỗ). Để chống cháy lan, không được trồng rừng trên hai lô nối trực tiếp với nhau bởi một lối mòn.

Yêu cầu: Chọn một tập các lô để trồng rừng (có thể không chọn lô nào) sao cho tổng giá trị lớn nhất, và chỉ ra một cách chọn như vậy.

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 a1,a2,…,an.
  • Mỗi dòng trong n−1 dòng tiếp theo chứa hai số nguyên u,v: có lối mòn nối lô u và lô v.

Dữ liệu ra

  • Dòng thứ nhất in tổng giá trị lớn nhất.
  • Dòng thứ hai in số k là số lô được chọn.
  • Dòng thứ ba in k số hiệu lô được chọn, theo thứ tự bất kỳ (để trống nếu k=0).

Nếu có nhiều cách chọn đạt tổng lớn nhất, in một cách bất kỳ.

Ràng buộc

  • 1≤n≤2·105.
  • −109≤ai≤109.
  • 1≤u,v≤n, các lối mòn tạo thành một cây.

Subtasks

  • Subtask 1 (30% số điểm): n≤20.
  • Subtask 2 (30% số điểm): lối mòn thứ i nối lô i và lô i+1 (các lô xếp thành một hàng).
  • Subtask 3 (40% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5
3 2 5 -1 4
1 2
1 3
3 4
3 5
7
2
2 3
Trồng trên lô 2 và lô 3 được 2+5=7. Chọn lô 1 và lô 5 cũng được 7, đều được chấp nhận.
4
-5 -2 -7 -1
1 2
2 3
3 4
0
0
Mọi lô đều lỗ, nên không trồng lô nào.

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