Cứu hỏa
Xem PDF
Điểm:
1400
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Đội phòng cháy chữa cháy AS làm nhiệm vụ chữa cháy, hoả hoạn cho tất cả các địa điểm trong thành phố \(X\). Với phương châm "Tốc độ cứu hộ, quyết định tất cả", họ phải xây dựng sẵn lộ trình đến các vị trí để khi cần là sẵn sàng lên đường. Khi có một đám cháy xảy ra tại một khu vực nhất định (\(D\)), xe cứu hỏa cần được cử đi từ vị trí \(S\). Mỗi con đường giữa các khu vực/trạm cứu hỏa có một thời gian di chuyển nhất định.
Để đảm bảo hiệu quả chữa cháy tối đa, hãy:
- Xác định thời gian di chuyển ngắn nhất để xe cứu hỏa đến được khu vực cháy \(D\).
- Đếm số lượng các tuyến đường khác nhau có cùng thời gian di chuyển ngắn nhất đó. Việc này cực kỳ quan trọng để đội cứu hỏa có các phương án dự phòng nhanh chóng nếu một tuyến đường chính bị tắc nghẽn hoặc không thể đi qua do sự cố bất ngờ.
Input
- Dòng 1: Bốn số nguyên \(N, M, S, D\).
- \(N\): Tổng số địa điểm cần cứu hộ, được đánh số từ \(1\) đến \(N\).
- \(M\): Số lượng tuyến đường kết nối các địa điểm.
- \(S\): vị trí xuất phát.
- \(D\): vị trí xảy ra đám cháy.
- \(M\) dòng tiếp theo: Mỗi dòng gồm ba số nguyên \(U, V, W\).
- \(U, V\): Hai địa điểm được kết nối bởi một tuyến đường.
- \(W\): Thời gian di chuyển (trọng số) giữa \(U\) và \(V\).
Output
- Dòng 1: In ra thời gian di chuyển ngắn nhất từ trạm cứu hỏa \(S\) đến khu vực cháy \(D\).
- Dòng 2: In ra số lượng các tuyến đường khác nhau có cùng thời gian di chuyển ngắn nhất đó.
- Nếu không có đường đi từ \(S\) đến \(D\), in ra \(-1\) trên cả hai dòng.
Example
Test 1
Input
6 8 1 6
1 2 5
1 3 10
2 4 10
3 4 5
3 5 15
4 5 5
4 6 10
5 6 5
Output
25
2
Ràng buộc
- \(1 \leq N \leq 10^3\)
- \(1 \leq S, D \leq N\)
- \(1 \leq M \leq N \times (N-1)/2\)
- \(1 \leq W \leq 10^9\)
Bình luận