#G00012. Đổ đầy bình (Full Tank?)
Đổ đầy bình (Full Tank?)
Đổ đầy bình (Full Tank?)
Nguồn: UVa Online Judge / Kattis
Phiên bản: Phước Hưng OJ Extended
Đề bài
Có thành phố và con đường hai chiều. Giá một đơn vị nhiên liệu tại thành phố là .
Xe tiêu thụ đúng một đơn vị nhiên liệu cho mỗi đơn vị khoảng cách và bắt đầu với bình xăng rỗng.
Mỗi truy vấn cho biết:
- dung tích bình nhiên liệu ;
- thành phố xuất phát ;
- thành phố đích .
Tại một thành phố, bạn có thể mua từng đơn vị nhiên liệu với giá của thành phố đó, miễn lượng nhiên liệu trong bình không vượt quá .
Hãy tìm chi phí nhiên liệu nhỏ nhất cho từng truy vấn.
Input
Dòng đầu chứa hai số nguyên .
Dòng thứ hai chứa số nguyên .
Trong dòng tiếp theo, mỗi dòng chứa , mô tả một con đường hai chiều giữa và có độ dài .
Dòng tiếp theo chứa số truy vấn .
Trong dòng cuối, mỗi dòng chứa .
Các truy vấn thuộc cùng một đồ thị, vì vậy chúng vẫn nằm trong cùng một test case.
Output
Với mỗi truy vấn, in chi phí nhỏ nhất để đi từ đến với dung tích bình .
Nếu không thể đi được, in impossible.
Subtask
Trong tất cả các Subtask: ; ; .
- Subtask 1 — 20% — 0.75 giây: ; ; ; .
- Subtask 2 — 30% — 1.50 giây: ; ; ; .
- Subtask 3 — 50% — 3.00 giây: ; ; ; .
Ví dụ
Input
5 5
10 10 20 12 13
0 1 9
0 2 8
1 2 1
1 3 11
2 3 7
2
10 0 3
20 1 4
Output
170
impossible
Giải thích
Với truy vấn đầu, bình dung tích đủ để đi qua mạng đường và chi phí nhiên liệu nhỏ nhất là . Với truy vấn thứ hai, không tồn tại hành trình từ đến , nên kết quả là impossible.
##Nhãn
- Shortest Paths -> Dijkstra
- Dynamic Programming -> State compression
- Data Structures -> Priority queue