Bão Yagi

Xem PDF



Dạng bài
Ngôn ngữ cho phép
C++, Python
Điểm: 1200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Siêu bão Yagi vừa quét qua, gây ra tình trạng khẩn cấp ở nhiều khu vực. Có \(K\) kho chứa vật tư cứu trợ (\(S_1, S_2, \ldots, S_k\)) được đặt ở các vị trí khác nhau. Mỗi kho có thể cung cấp một lượng vật tư nhất định. Một khu vực bị ảnh hưởng nặng nề (\(T\)) đang rất cần sự tiếp tế. Bạn cần xác định thời gian ngắn nhất để chuyến hàng cứu trợ đầu tiên từ bất kỳ kho nào đến được khu vực \(T\). Đồng thời, bạn cần biết vật tư đó đến từ kho nào để phối hợp công tác cứu trợ hiệu quả.

Input

  • Dòng \(1\): Hai số nguyên \(N\) (tổng số địa điểm) và \(M\) (số lượng tuyến đường nối các địa điểm).
  • Dòng \(2\): Số nguyên \(K\) (số lượng kho chứa vật tư cứu trợ).
  • Dòng \(3\): \(K\) số nguyên, là danh sách các kho chứa vật tư: \(S_1, S_2, \ldots, S_k\).
  • Dòng \(4\): \(T\), khu vực bị ảnh hưởng cần cứu trợ.
  • \(M\) dòng tiếp theo, mỗi dòng gồm ba số nguyên \(U\), \(V\), \(W\), mô tả một tuyến đường giữa địa điểm \(U\) và địa điểm \(V\) mất \(W\) đơn vị thời gian để di chuyển.

Output

  • Dòng \(1\): Thời gian ngắn nhất để vật tư đến được khu vực \(T\).
  • Dòng \(2\): Kho chứa vật tư đã cung cấp chuyến hàng đến sớm nhất đó.

Nếu không thể đến được địa điểm cứu trợ thì in hai số \(-1\) trên \(2\) dòng.

Example

Test 1

Input
6 5
3
1 2 3
6
1 4 10
2 4 2
3 5 1
4 6 5
5 6 10
Output
7
2

Ràng buộc

  • \(1 \leq N \leq 10^3\)
  • \(1 \leq K, U, V, T \leq N\)
  • \(1 \leq M \leq N \times (N-1)/2\)
  • \(1 \leq W \leq 10^9\)

Bình luận (1)

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