"Tôi muốn đến chợ Araby để mua một món quà cho người mà tôi đã yêu. Tuy nhiên, nếu tôi đến quá muộn, tất cả các cửa hàng sẽ đóng cửa và tôi sẽ không thể mua bất cứ thứ gì. tôi không? "
Mục tiêu: Đưa cậu bé đến Araby từ North Richmond Street trước khi tất cả các cửa hàng đóng cửa.
Mục tiêu thực tế: Hãy chắc chắn rằng cậu bé không đến Araby trước khi các cửa hàng đóng cửa.
Chương trình của bạn sẽ nhận đầu vào theo định dạng sau:
<time> <map>
Ở đâu
<time>
là thời gian tối đa cậu bé có thể dành để đi du lịch, tính bằng phút. Nó là một số nguyên dương.<map>
là một biểu đồ của các tuyến đường tàu có thể đi.
Đây là cách định dạng cho biểu đồ hoạt động:
- Mỗi câu được kết thúc bằng dấu chấm phẩy.
- Các nút trong bản đồ (đại diện cho các công tắc) được thể hiện bằng các chữ cái viết thường.
- Một đường dẫn giữa các nút được biểu diễn bằng cú pháp
a,X,b
, trong đóX
một số nguyên biểu thị trọng số của đường dẫn. Trọng lượng của con đường là thời gian, tính bằng phút, tàu phải đi qua hai nút đó. - Araby được đại diện với
a
, và North Richmond Street được đại diện với mộtn
. - Tất cả các đường dẫn là hai chiều.
Chẳng hạn, biểu đồ này (giả vờ các đường dẫn là hai chiều):
Hình ảnh của Artyom Kalinin, qua Wikimedia Commons. Được sử dụng theo giấy phép CC BY-SA 3.0 .
sẽ được ghi lại trong ký hiệu đồ thị như:
a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;
Lưu ý rằng đầu vào này không có n
, vì vậy đây là đầu vào không hợp lệ. Chương trình của bạn có thể làm bất cứ điều gì nếu được cung cấp đầu vào không hợp lệ.
Đây là một ví dụ đầu vào:
21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;
(Đây chỉ là biểu đồ giống như hình ảnh ở trên được a
thay thế n
và f
thay thế bởi a
).
Cậu bé phải nhận được từ n
để a
trong vòng 21 phút. Nếu anh ta đi theo lộ trình n
-> c
-> e
-> d
-> a
, anh ta sẽ đến đó sau 20 phút, đúng lúc. Chúng ta có thể biểu diễn tuyến đường đó dưới dạng danh sách các nút được phân tách bằng dấu phẩy:
n,c,e,d,a
Mặt khác, tuyến đường n
-> b
-> c
-> e
-> d
-> a
sẽ khiến cậu bé mất 27 phút, không kịp. Chúng ta có thể đại diện cho tuyến đường như thế này:
n,b,c,e,d,a
Một cách khác có thể sẽ khiến cậu bé không kịp thực hiện là:
n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a
Chương trình của bạn nên nhận đầu vào như được mô tả ở trên, và thoạt nhìn có vẻ xuất ra một tuyến đường sẽ khiến cậu bé thực hiện kịp thời, nhưng thực sự lại tạo ra một tuyến đường khiến cậu bé không kịp. Đối với bất kỳ đầu vào nhất định, sẽ luôn tồn tại một tuyến đường, mà không quay lại, điều đó khiến cậu bé không thực hiện kịp thời.
Đây là một cuộc thi phổ biến ngầm, vì vậy, mục có nhiều phiếu nhất sẽ chiến thắng. Phiếu bầu được trao cho sự khéo léo trong việc che giấu lỗi - càng ít rõ ràng thì càng tốt.
Dưới đây là một số biểu đồ mẫu để kiểm tra chương trình của bạn.
Đầu vào:
12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;
Một đại diện trực quan (đại diện trực quan này chỉ dành cho rõ ràng và không phải là một phần của thách thức):
Một đầu ra có thể :
n,d,b,e,a
Đầu vào:
10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;
Dưới đây là hình ảnh trực quan của biểu đồ:
Một đầu ra có thể :
n,d,a