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

Mạng tốc độ cao

Đề bài

Mô tả

Arkady đang xây dựng một mạng trao đổi Internet tốc độ cao. Mạng gồm n nút được nối bởi số dây ít nhất có thể sao cho toàn bộ mạng liên thông (mỗi dây nối trực tiếp hai nút). Có đúng k nút được chọn làm nút thoát: mỗi nút thoát phải có bậc đúng bằng 1 (nối với đúng một nút khác); tất cả các nút còn lại phải có bậc ít nhất 2 để tăng tính ổn định của hệ thống.

Vì mạng liên thông và có n1 cạnh nên nó là một cây. Yêu cầu: hãy xây dựng cây sao cho khoảng cách lớn nhất giữa hai nút thoát bất kỳ là nhỏ nhất có thể. Khoảng cách giữa hai nút là số dây trên đường đi đơn nối chúng.

Dữ liệu vào

Một dòng duy nhất chứa hai số nguyên nk.

Dữ liệu ra

  • Dòng đầu in một số nguyên — khoảng cách nhỏ nhất có thể giữa hai nút thoát xa nhau nhất.
  • Trong n1 dòng tiếp theo, mỗi dòng in hai số nguyên là chỉ số hai đầu của một dây. Các nút được đánh số từ 1 đến n. Mỗi cạnh in đúng một lần, thứ tự cạnh và thứ tự hai đầu là tuỳ ý. Các nút thoát có thể có chỉ số bất kỳ.

Nếu có nhiều cách xây dựng tối ưu, in ra bất kỳ cách nào.

Ràng buộc

  • 3n2·105
  • 2kn1

Ví dụ

Input Output Giải thích
3 2 2
1 2
1 3
Cây duy nhất là đường đi 213, hai nút thoát là 23, khoảng cách giữa chúng là 2.
5 3 3
1 2
2 3
1 4
1 5
Cây có ba nút thoát {3,4,5}; khoảng cách lớn nhất giữa hai nút thoát bất kỳ là 3 (giữa 34, hoặc giữa 35).

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