Tập con trọng số lớn nhất

Đề bài

Mô tả

Cho một cây gồm n đỉnh, đánh số từ 1 đến n. Đỉnh thứ v có trọng số av.

Khoảng cách giữa hai đỉnh trong cây là số cạnh trên đường đi đơn giản nối chúng.

Hãy tìm một tập con các đỉnh có tổng trọng số lớn nhất (trọng số của tập là tổng trọng số các đỉnh trong tập), sao cho không tồn tại cặp đỉnh nào trong tập có khoảng cách nhỏ hơn hoặc bằng k.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: số đỉnh của cây và ràng buộc khoảng cách.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an: trọng số các đỉnh.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên uv mô tả một cạnh nối đỉnh u và đỉnh v.

Dữ liệu đảm bảo các cạnh tạo thành một cây.

Dữ liệu ra

In ra một số nguyên: tổng trọng số lớn nhất của tập con mà mọi cặp đỉnh trong tập đều có khoảng cách lớn hơn k.

Ràng buộc

  • 1n,k200
  • 1ai105
  • 1u,vn, uv

Ví dụ

Input Output Giải thích
7 2
2 1 2 1 2 1 1
6 4
1 5
3 1
2 3
7 5
7 4
4 Chọn các đỉnh 2,5,6 (trọng số 1,2,1): mọi cặp đều có khoảng cách lớn hơn 2, tổng bằng 4.
5 1
1 2 3 4 5
1 2
2 3
3 4
3 5
11 Cây là đường 123 rẽ nhánh 45 tại đỉnh 3. Chọn các đỉnh 2,4,5 (trọng số 2,4,5): mọi cặp có khoảng cách lớn hơn 1, tổng bằng 11.

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