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

Đường đi ngắn nhất thứ K

Đề bài

Mô tả

Cho một đồ thị vô hướng, có trọng số, liên thông gồm n đỉnh và m cạnh.

Gọi di,j là độ dài đường đi ngắn nhất giữa đỉnh i và đỉnh j. Xét mảng gồm tất cả các giá trị di,j với 1i<jn, tức là đường đi từ một đỉnh tới chính nó không được tính, và hai đường đi ijji chỉ được tính một lần. Mảng này có đúng n(n1)2 phần tử.

Hãy sắp xếp mảng đó theo thứ tự không giảm và in ra phần tử thứ k.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, k: số đỉnh, số cạnh và thứ hạng cần tìm.
  • m dòng tiếp theo, mỗi dòng chứa ba số nguyên x, y, w: một cạnh nối hai đỉnh xy với trọng số w.

Dữ liệu ra

Một số nguyên duy nhất: độ dài đường đi ngắn nhất đứng thứ k theo thứ tự không giảm.

Ràng buộc

  • 2n2·105
  • n1mmin(n(n1)2, 2·105)
  • 1kmin(n(n1)2, 400)
  • 1x,yn, xy, 1w109
  • Đồ thị liên thông, không có khuyên và không có cạnh song song (giữa mỗi cặp đỉnh có nhiều nhất một cạnh).

Ví dụ

Input Output Giải thích
6 10 5
2 5 1
5 3 9
6 2 2
1 3 1
5 1 8
6 5 10
1 6 5
6 4 6
3 6 2
3 4 5
3 Mảng có 6·52=15 phần tử. Năm giá trị nhỏ nhất sau khi sắp xếp là 1,1,2,2,3, trong đó d2,5=1, d1,3=1, d2,6=2, d3,6=2d1,6=3 (đi qua đỉnh 3). Vậy phần tử thứ 53.
7 15 18
2 6 3
5 7 4
6 5 4
3 6 9
6 7 7
1 6 4
7 1 6
7 2 1
4 3 2
3 2 8
5 3 6
2 5 5
3 7 9
4 1 8
2 1 1
9 Mảng có 7·62=21 phần tử. Bốn giá trị nhỏ nhất là 1,1,2,3; sau khi sắp xếp toàn bộ, phần tử thứ 18 bằng 9, đạt được chẳng hạn tại cặp đỉnh (3,6).

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