trang chủ / đề bài / weightdiv

Chia đôi trọng số cạnh

Đề bài

Mô tả

Cho một cây có gốc gồm n đỉnh, đỉnh 1 là gốc. Mỗi cạnh i có trọng số wi (số nguyên dương).

Trọng số của đường đi từ đỉnh u đến đỉnh v là tổng trọng số các cạnh trên đường đi giữa hai đỉnh đó.

Bạn có thể thực hiện một dãy các phép biến đổi (có thể không thực hiện phép nào). Mỗi phép biến đổi: chọn một cạnh và chia trọng số của nó cho 2, làm tròn xuống (nghĩa là wi:=⌊wi/2⌋).

Nhiệm vụ: tìm số phép biến đổi tối thiểu để tổng trọng số các đường đi từ gốc tới mỗi lá không vượt quá S. Tức là gọi w(u,v) là trọng số đường đi từ u tới v, cần đạt

∑v∈láw(1,v)≤S.

Một đỉnh được gọi là lá nếu nó không có đỉnh con nào trong cây có gốc (đỉnh gốc không được coi là lá khi n≥2).

Bạn phải xử lý t bộ dữ liệu độc lập.

Dữ liệu vào

Dòng đầu chứa số nguyên t (1≤t≤2·104) — số bộ dữ liệu.

Với mỗi bộ dữ liệu:

  • Dòng đầu chứa hai số nguyên n và S (2≤n≤105; 1≤S≤1016).
  • n−1 dòng tiếp theo, mỗi dòng chứa ba số nguyên vi, ui, wi (1≤vi,ui≤n; 1≤wi≤106) mô tả một cạnh nối hai đỉnh vi và ui với trọng số wi.

Tổng n trên tất cả các bộ dữ liệu không vượt quá 105.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên — số phép biến đổi tối thiểu cần thực hiện.

Ràng buộc

  • 1≤t≤2·104
  • 2≤n≤105
  • 1≤S≤1016
  • 1≤wi≤106
  • Tổng n trên tất cả bộ dữ liệu không vượt quá 105

Ví dụ

Input Output Giải thích
3
3 20
2 1 8
3 1 7
5 50
1 3 100
1 5 10
2 3 123
5 4 55
2 100
1 2 409
0
8
3
Bộ 1: tổng đường đi tới lá là 8+7=15≤20, không cần thao tác. Bộ 2: cần 8 phép chia. Bộ 3: cây một đường thẳng, 409→204→102→51≤100 sau 3 phép chia.
3
3 20
2 1 8
3 2 7
5 50
1 3 100
1 5 10
2 3 123
5 4 55
2 100
1 2 409
0
8
3
Cây bộ 1 giờ là đường thẳng 1−2−3: đường tới lá 3 có trọng số 8+7=15≤20.

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