trang chủ / đề bài / gr06_onpath

Cung trên đường ngắn nhất

Đề bài

Mô tả

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

Gọi D là độ dài đường đi ngắn nhất từ s tới t. Một cung được gọi là quan trọng nếu nó nằm trên ít nhất một đường đi từ s tới t có độ dài đúng bằng D. Hãy liệt kê tất cả các cung quan trọng.

Nếu không có đường đi từ s tới t, hoặc s=t, thì không có cung quan trọng nào.

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

  • Dòng thứ nhất in ra k là số cung quan trọng.
  • Nếu k>0, dòng thứ hai in ra chỉ số của các cung quan trọng theo thứ tự tăng dần (các cung được đánh số từ 1 theo thứ tự trong dữ liệu vào).

Ràng buộc

  • 1≤n≤3·104
  • 0≤m≤6·104
  • 1≤s,t,ui,vi≤n
  • 1≤wi≤109

Ví dụ

Input Output Giải thích
6 9 1 6
1 2 2
1 3 1
3 2 1
2 4 3
3 4 5
4 6 1
2 5 1
5 6 4
6 1 1
5
1 2 3 4 6
D=6, có hai đường ngắn nhất: 1→2→4→6 (cung 1,4,6) và 1→3→2→4→6 (cung 2,3,4,6). Cung 7 (2→5) nằm trên đường ngắn nhất từ 1 tới 5, nhưng đi tiếp tới 6 thì dài 7.
4 4 1 4
1 2 1
2 3 1
4 3 1
3 1 1
0 Cung 4→3 chỉ đi được từ 4 sang 3, nên từ 1 không tới được 4.

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