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

Vị trí nhà hàng

Đề bài

Mô tả

Hệ thống giao thông của một thành phố gồm n nút giao được nối với nhau bởi m con đường hai chiều. Con đường thứ i nối hai nút giao khác nhau ai, bi và có độ dài wi. Giữa hai nút giao bất kì có nhiều nhất một con đường, và từ nút giao nào cũng có thể đi tới mọi nút giao khác.

Người ta muốn mở một nhà hàng sao cho việc đi lại tới nhà hàng là thuận tiện nhất. Cụ thể, gọi D là khoảng cách đi theo đường từ nhà hàng tới nút giao xa nhất; hãy chọn vị trí đặt nhà hàng để D nhỏ nhất.

Điểm mấu chốt: nhà hàng không bắt buộc phải nằm ở một nút giao, nó có thể nằm ở một điểm bất kì trên một con đường. Nếu nhà hàng nằm trên con đường nối ab có độ dài w, cách a một khoảng x (0xw), thì khoảng cách từ nhà hàng tới nút giao v bằng min(x+d(a,v), (wx)+d(b,v)), với d(·,·) là khoảng cách ngắn nhất giữa hai nút giao.

Hãy tìm giá trị nhỏ nhất có thể của D.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số nút giao và số con đường.
  • m dòng tiếp theo, dòng thứ i chứa ba số nguyên ai, bi, wi: con đường thứ i nối nút giao ai với nút giao bi và có độ dài wi.

Dữ liệu ra

Một số thực duy nhất là giá trị nhỏ nhất của D. Kết quả được chấp nhận nếu sai số tuyệt đối hoặc tương đối không vượt quá 106.

Ràng buộc

  • 2n200
  • n1mn(n1)2
  • 1ai,bin, aibi
  • 1wi105
  • Giữa hai nút giao bất kì có nhiều nhất một con đường, và đồ thị liên thông.

Ví dụ

Input Output Giải thích
3 2
1 2 100
2 3 1
50.5000000000 Đặt nhà hàng trên con đường 12, cách nút 1 một khoảng 50.5. Khi đó khoảng cách tới nút 150.5, tới nút 249.5, tới nút 350.5.
3 3
1 2 1
2 3 1
1 3 1
1.0000000000 Đồ thị là tam giác đều cạnh 1. Đặt nhà hàng ở bất kì nút giao nào cũng cho D=1, và không thể tốt hơn.
2 1
1 2 1
0.5000000000 Đặt nhà hàng ngay giữa con đường duy nhất.

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