trang chủ / đề bài / gr06_route

Lộ trình ngắn nhất

Đề bài

Mô tả

Cho một đồ thị vô hướng gồm n đỉnh đánh số từ 1 đến n và m cạnh, cùng hai đỉnh s và t. Cạnh thứ i nối hai đỉnh ui, vi và có độ dài wi. Đồ thị có thể có khuyên và nhiều cạnh nối cùng một cặp đỉnh.

Hãy tìm một đường đi từ s tới t có tổng độ dài nhỏ nhất và in ra đường đi đó. Nếu có nhiều đường đi ngắn nhất, in ra đường nào cũng được. Nếu s=t, đường đi ngắn nhất chỉ gồm đúng một đỉnh s và có độ dài 0.

Dữ liệu vào

  • Dòng đầu tiên chứa bốn số nguyên n, m, s, t.
  • 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ó đường đi từ s tới t, in ra một số −1.
  • Ngược lại, dòng thứ nhất in ra hai số d và k: d là độ dài đường đi ngắn nhất, k là số đỉnh trên đường đi bạn chọn. Dòng thứ hai in ra k đỉnh của đường đi theo thứ tự từ s tới t, cách nhau bởi một dấu cách.

Ràng buộc

  • 1≤n≤5·104
  • 0≤m≤105
  • 1≤s,t,ui,vi≤n
  • 1≤wi≤109

Ví dụ

Input Output Giải thích
6 8 1 6
1 2 7
1 3 2
3 2 3
2 4 1
3 5 9
4 6 6
5 6 1
2 6 9
12 5
1 3 2 4 6
Độ dài 2+3+1+6=12. Đường 1−3−5−6 cũng dài 2+9+1=12 và cũng được chấp nhận (khi đó in 12 4).
5 4 2 5
1 2 4
2 3 1
4 5 2
3 3 5
-1 Từ đỉnh 2 chỉ tới được các đỉnh 1 và 3.

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