trang chủ / đề bài / gr06_meet

Điểm hẹn

Đề bài

Mô tả

Một thành phố có n nút giao thông đánh số từ 1 đến n và m con đường hai chiều. Con đường thứ i nối hai nút ui, vi và có độ dài wi. Có thể có đường nối một nút với chính nó và nhiều đường nối cùng một cặp nút.

An đang ở nút a, Bình đang ở nút b. Lúc 0 cả hai cùng xuất phát, mỗi người đi với vận tốc 1 (đi hết con đường độ dài w mất w đơn vị thời gian) và được phép đứng chờ tại một nút. Hai bạn muốn hẹn gặp nhau tại một nút v nào đó. Thời điểm sớm nhất cả hai cùng có mặt tại v là max(da(v),db(v)), trong đó da(v), db(v) là độ dài đường đi ngắn nhất từ a và từ b tới v.

Hãy chọn nút hẹn sao cho thời điểm gặp nhau là sớm nhất. Nếu có nhiều nút cho cùng thời điểm sớm nhất, chọn nút có số thứ tự nhỏ nhất.

Dữ liệu vào

  • Dòng đầu tiên chứa bốn số nguyên n, m, a, b.
  • m dòng tiếp theo, dòng thứ i chứa ba số nguyên ui,vi,wi.

Dữ liệu ra

Nếu không có nút nào cả hai bạn cùng tới được, in ra −1. Ngược lại in ra hai số: thời điểm gặp nhau sớm nhất và nút hẹn.

Ràng buộc

  • 1≤n≤3·104
  • 0≤m≤6·104
  • 1≤a,b,ui,vi≤n
  • 1≤wi≤109

Ví dụ

Input Output Giải thích
6 7 1 6
1 2 4
2 6 4
1 3 1
3 6 6
1 4 5
4 6 5
5 6 2
4 2 Tại nút 2: An tới lúc 4, Bình tới lúc 4. Nút 3 có tổng quãng đường 1+6=7 nhỏ hơn, nhưng Bình phải đi tới lúc 6 mới tới.
5 3 1 4
1 2 3
2 3 1
4 5 7
-1 An chỉ đi được tới các nút 1,2,3, Bình chỉ đi được tới các nút 4,5.

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