CSES - Shortest Routes II | Tuyến đường ngắn nhất II

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1400 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

\(n\) thành phố và \(m\) con đường giữa chúng. Nhiệm vụ của bạn là hãy xử lý \(q\) truy vấn mà trong đó bạn phải xác định độ dài của tuyến đường ngắn nhất giữa hai thành phố cho trước.

Input

  • Dòng đầu vào đầu tiên có ba số nguyên \(n\), \(m\)\(q\): số lượng thành phố, con đường và truy vấn
  • Sau đó, có \(m\) dòng mô tả các con đường. Mỗi dòng có ba số nguyên \(a\), \(b\)\(c\): có một con đường giữa các thành phố \(a\)\(b\) mà độ dài của nó là \(c\). Tất cả con đường đều là con đường hai chiều
  • Cuối cùng, có \(q\) dòng mô tả các truy vấn. Mỗi dòng có hai số nguyên \(a\)\(b\): xác định độ dài của tuyến đường ngắn nhất giữa các thành phố \(a\)\(b\)
  • Các ràng buộc:
    • \(1 \leq n \leq 500\)
    • \(1 \leq m \leq n^2\)
    • \(1 \leq q \leq 10^5\)
    • \(1 \leq a,b \leq n\)
    • \(1 \leq c \leq 10^9\)

Output

  • In độ dài của tuyến đường ngắn nhất với mỗi truy vấn. Nếu không có tuyến đường nào, in \(-1\) thay vào đó

Example

Test 1

Input
4 3 5
1 2 5
1 3 9
2 3 3
1 2
2 1
1 3
1 4
3 2
Output
5
5
8
-1
3

Bình luận (4)

Mới nhất
Tải bình luận...