Chủ Nhật, 9 tháng 4, 2017

GAMES

Nguồn: Đề thi chọn học sinh giỏi Tin học tỉnh Khánh Hòa ngày 04/04/2017
Tý vừa mới khám phá ra một trò chơi trên mạng rất thú vị. Một trong những điều thú vị là người chơi phải nhập vai một người thám hiểm để đi tìm kho báu. Trò chơi mô phỏng một vùng biển trong đó có một quần thể gồm N hòn đảo được đánh số thứ tự từ 1 đến N. Trong quần thể các hòn đảo này có một hòn đảo đang chứa một kho báu có giá trị rất lớn, nhưng để vào được kho báu người chơi phải có chìa khóa để mở cửa kho báu. Giữa các hòn đảo này đã có M cây cầu bắc qua sao cho giữa hai hòn đảo chỉ có không quá một cây cầu bắc qua và từ một hòn đảo bất kỳ có thể đến được các đảo khác bằng con đường đi qua những cây cầu này. Khi đi qua mỗi cây cầu, người chơi phải bỏ ra một số tiền dùng để mua vé qua cầu. Chìa khóa để mở kho báu được treo ở giữa một cây cầu đặc biệt, khi đi qua cây cầu này, người chơi không cần phải mua vé nhưng để lấy được chìa khóa người chơi phải đi qua cầu đúng một lần duy nhất (không quay lại đầu cầu đã đi qua) vì sau khi lấy chìa khóa và qua khỏi cầu thì cầu sẽ bị sập.
Yêu cầu: Trò chơi cho biết chỉ số hòn đảo ban đầu khi người chơi xuất phát, vị trí cây cầu có treo chìa khóa và chỉ số của hòn đảo chứa kho báu, bạn hãy lập trình tính xem Tý có thể chơi để lấy được chìa khóa và đến được kho báu để lấy châu báu hay không và nếu được thì phải tốn ít nhất bao nhiêu tiền để mua vé qua cầu.
Dữ liệu vào: Tệp văn bản GAMES.INP gồm:
+ Dòng đầu ghi số nguyên NM (2 ≤ N ≤ 1000, NMN(N-1)/2);
+ Dòng thứ hai ghi 4 số nguyên s, t, ab, trong đó s là thứ tự hòn đảo xuất phát của người chơi, t là chỉ số hòn đảo chứa kho báu và a, b (ab) là số thứ tự của hai hòn đảo có cây cầu bắc qua đang giữ chìa khóa mở kho báu.
+ Dòng thứ i (i =1..M) trong M dòng tiếp theo ghi 3 số nguyên ui, vi, zi với ý nghĩa là có cây cầu bắc từ đảo có chỉ số ui đến đảo có chỉ số vi (1≤ ui, vi,N, uivi,) và phải mua vé với số tiền zi là số nguyên (0<zi ≤ 1000).
Kết quả: Ghi ra tệp văn bản GAMES.OUT tổng số tiền ít nhất mà người chơi phải chi phí để đi từ s qua cầu (a, b) để lấy chìa khóa và cuối cùng đến t để lấy kho báu. Nếu người chơi không thể thực hiện được thì chỉ ghi số -1.
Ví dụ:
GAMES.INP
GAMES.OUT

GAMES.INP
GAMES.OUT
6 6
1 6 4 5
1 2 5
1 3 2
2 3 1
2 4 2
3 4 4
5 6 8
13

6 6
1 4 4 5
1 2 5
1 3 2
2 3 1
2 4 2
3 4 4
5 6 8
-1


Không có nhận xét nào: