Ghép cặp trên cây

Đề bài

Mô tả

Một khu dân cư gồm 2k ngôi nhà đánh số từ 1 đến 2k2k1 con đường hai chiều. Con đường thứ i nối hai nhà aibi, đi qua nó mất wi đơn vị thời gian. Giữa hai ngôi nhà bất kỳ luôn có đúng một đường đi không lặp cạnh, nói cách khác hệ thống nhà và đường tạo thành một cây.

k cặp bạn thân cần được xếp vào các ngôi nhà: mỗi người ở đúng một ngôi nhà và mỗi ngôi nhà có đúng một người. Với một cách xếp, gọi f(i) là tổng thời gian đi trên đường đi ngắn nhất giữa hai ngôi nhà của cặp thứ i.

Hãy tính hai giá trị:

  • G — giá trị nhỏ nhất có thể của f(1)+f(2)++f(k);
  • B — giá trị lớn nhất có thể của f(1)+f(2)++f(k).

Hai giá trị này được tính độc lập với nhau: cách xếp đạt G và cách xếp đạt B không nhất thiết phải giống nhau.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên t — số bộ dữ liệu.
  • Với mỗi bộ dữ liệu:
    • Dòng đầu chứa số nguyên k — số cặp bạn thân.
    • 2k1 dòng tiếp theo, dòng thứ i chứa ba số nguyên ai, bi, wi mô tả con đường thứ i.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra trên một dòng hai số nguyên GB cách nhau bởi một dấu cách.

Ràng buộc

  • 1t500
  • 1k105
  • 1ai,bi2kaibi
  • 1wi106
  • Các con đường trong mỗi bộ dữ liệu luôn tạo thành một cây.
  • Tổng của k trên tất cả các bộ dữ liệu trong một file không vượt quá 3·105.

Ví dụ

Input Output Giải thích
2
3
1 2 3
3 2 4
2 4 3
4 5 6
5 6 5
2
1 2 1
1 3 2
1 4 3
15 33
6 6
Bộ 1: ghép (5,6), (1,4), (3,2) cho tổng 5+6+4=15 là nhỏ nhất; ghép (1,4), (6,2), (3,5) cho tổng 6+14+13=33 là lớn nhất.
Bộ 2: cây hình sao với tâm là nhà 1. Cả ba cách ghép đều cho tổng 6, nên G=B=6.
1
2
1 2 1
2 3 2
3 4 3
4 8 Đường thẳng 1234. Ghép (1,2)(3,4) cho tổng 1+3=4 là nhỏ nhất; ghép (1,3)(2,4) cho tổng 3+5=8 là lớn nhất. Con đường giữa nhà 2 và nhà 3 không nằm trên đường đi của cặp nào trong cách ghép thứ nhất, nhưng nằm trên đường đi của cả hai cặp trong cách ghép thứ hai.

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