trang chủ / bài tập / baltree22

Cân Bằng Cây

Đề bài

Mô tả

Farmer John có một cây có gốc với N đỉnh (2N105). Đỉnh 1 là gốc, đỉnh i2 có cha là pi với pi<i. Mỗi đỉnh i cần được gán một giá trị nguyên si[li,ri].

"Độ mất cân bằng" được định nghĩa là hiệu tuyệt đối lớn nhất |sisj| giữa bất kỳ đỉnh i và tổ tiên j của nó.

Hãy gán giá trị cho các đỉnh sao cho độ mất cân bằng là nhỏ nhất.

Dữ liệu vào

  • Dòng 1: Hai số nguyên T (số test case) và B{0,1}
  • Với mỗi test case:
    • Dòng 1: Số nguyên N
    • Dòng 2: N1 số nguyên p2,p3,,pN
    • N dòng tiếp theo: Hai số nguyên liri cho mỗi đỉnh

Dữ liệu ra

Với mỗi test case:

  • Dòng 1: Độ mất cân bằng tối thiểu
  • Nếu B=1: Dòng 2 gồm N số nguyên s1,s2,,sN, là một cách gán đạt được độ mất cân bằng đó

Giá trị B giống nhau cho mọi test case trong cùng một bộ dữ liệu. Cách gán thường không duy nhất, mọi cách gán hợp lệ đều được chấp nhận.

Ràng buộc

  • 1T10
  • Tổng N qua tất cả test case 105
  • 0liri109

Ví dụ

Input Output Giải thích
3 0
3
1 1
0 100
1 1
6 7
5
1 2 3 4
6 6
1 6
1 6
1 6
5 5
3
1 1
0 10
0 1
9 10
3
1
4
B=0 nên chỉ cần in giá trị. Test case 1 có 3 đỉnh, gốc có [0,100], hai con có [1,1][6,7]. Gán gốc bằng 3 thì độ mất cân bằng là max(|31|,|36|)=3, không thể nhỏ hơn vì hai con là con cháu của gốc.
3 1
3
1 1
0 100
1 1
6 7
5
1 2 3 4
6 6
1 6
1 6
1 6
5 5
3
1 1
0 10
0 1
9 10
3
3 1 6
1
6 5 5 5 5
4
5 1 9
Cùng dữ liệu nhưng B=1 nên in thêm cách gán. Test case 2 là một đường thẳng 5 đỉnh, gán 6,5,5,5,5 cho độ mất cân bằng 1. Gán 6,6,6,6,5 cũng được chấp nhận.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0