[DHBB25 - DX32 - 10] Bài 3: Truy tìm ngọc rồng

Xem dạng PDF

Gửi bài giải

Điểm: 40,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Goku và Bulma đang trên đường tìm kiếm 7 viên ngọc rồng để cứu người bạn của mình. Goku đã có một số lượng ngọc rồng nhất định và phải tìm thêm ~K~ viên nữa. Khu vực Goku phải tìm kiếm gồm ~N~ thành phố và ~M~ con đường hai chiều nối liền các thành phố với nhau, con đường thứ ~i~ nối liền thành phố ~u_i~ với thành phố ~v_i~ và tốn thời gian di chuyển là ~w_i~. Trong đó các viên ngọc rồng nằm rải rác trong ~K~ thành phố. Nhờ vào radar của mình mà Bulma đã xác định được hết vị trí các viên ngọc rồng nằm ở thành phố nào.

Ban đầu Goku xuất phát từ thành phố 1, hãy giúp cậu ấy xác định thời gian ngắn nhất sao cho thu thập đủ ~K~ viên ngọc rồng để giải cứu bạn mình.

Lưu ý: Goku chỉ cần đến thành phố có ngọc rồng, thời gian lấy ngọc rồng không đáng kể.

Yêu cầu: Tìm thời gian ngắn nhất để Goku thu thập đủ ~K~ viên ngọc rồng.

Input

  • Dòng đầu tiên gồm 3 số nguyên dương ~N, K, M~ (~2 \le N \le 5000; 1 \le K \le \min(7, N - 1); M \le 10000~) – Tương ứng là số thành phố, số lượng ngọc rồng phải tìm và số con đường trong thành phố.
  • Dòng thứ 2 gồm ~K~ số nguyên ~p_i~, số nguyên thứ ~i~ biểu diễn vị trí của viên ngọc rồng thứ ~i~ và không có 2 viên ngọc rồng nào nằm cùng vị trí (~2 \le p_i \le N~).
  • ~M~ dòng tiếp theo, mỗi dòng chứa 3 số nguyên ~u_i, v_i, w_i~ tương ứng là có thể di chuyển từ ~u_i~ đến ~v_i~ trong thời gian ~w_i~.

Output

  • Gồm một dòng chứa kết quả của bài toán.

Sample Input 1

5 2 5
2 4
1 2 2
1 3 2
2 3 1
3 4 2
1 4 1

Sample Output 1

4

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.