Vẻ Đẹp Của Cây

Đề bài

Mô tả

Cho một cây gồm n đỉnh được đánh số từ 1 đến n. Mỗi đỉnh v đi kèm hai số nguyên lv và rv.

Bạn cần gán cho mỗi đỉnh v một số nguyên av sao cho lv≤av≤rv. Độ đẹp của cách gán là tổng

∑(u,v)∈E|au−av|

lấy trên tất cả các cạnh (u,v) của cây.

Hãy tìm độ đẹp lớn nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên n là số đỉnh của cây.
    • n dòng tiếp theo, dòng thứ i chứa hai số nguyên li và ri.
    • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên u và v cho biết có một cạnh nối đỉnh u và đỉnh v. Dữ liệu đảm bảo các cạnh này tạo thành một cây.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một dòng chứa độ đẹp lớn nhất.

Ràng buộc

  • 1≤t≤250
  • 2≤n≤105
  • 1≤li≤ri≤109
  • 1≤u,v≤n, u≠v
  • Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105

Ví dụ

Input Output Giải thích
3
2
1 6
3 8
1 2
3
1 3
4 6
7 9
1 2
2 3
6
3 14
12 20
12 19
2 12
10 17
3 17
3 2
6 5
1 5
2 6
4 6
7
8
62
Bộ 1: chọn a={1,8}, độ đẹp là ‖1−8‖=7.
Bộ 2: chọn a={1,5,9}, độ đẹp là ‖1−5‖+‖5−9‖=8. Ở đây đỉnh 2 không lấy giá trị ở hai đầu mút của [4,6] vẫn cho kết quả tối ưu, nhưng chọn a2=4 hoặc a2=6 cũng đạt 8.
1
4
1 5
2 2
3 9
1 1
1 2
1 3
3 4
17 Chọn a={1,2,9,1}: ‖1−2‖+‖1−9‖+‖9−1‖=1+8+8=17. Đỉnh 1 lấy giá trị nhỏ nhất chứ không phải lớn nhất, vì nó phải "xa" đỉnh 3 hơn là xa đỉnh 2.

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