«Я хочу пойти на арабский базар, чтобы купить подарок для того, в кого влюбился. Однако, если я приеду слишком поздно, все магазины будут закрыты, и я не смогу ничего купить. Вы можете помочь? я? "
Цель: доставить мальчика в Араби с Северной Ричмонд-стрит до того, как все магазины закроются.
Фактическая цель: убедиться, что мальчик не прибыл в Араби до закрытия магазинов.
Ваша программа примет входные данные в следующем формате:
<time> <map>
где
<time>
максимальное время, которое мальчик может провести в путешествии, в минутах. Это положительное целое число.<map>
график маршрутов, по которым может идти поезд
Вот как работает формат графика:
- Каждое утверждение заканчивается точкой с запятой.
- Узлы на карте (которые представляют переключатели) представлены с использованием одинарных строчных букв.
- Путь между узлами представлен синтаксисом
a,X,b
, гдеX
целое число представляет вес пути. Вес пути - это время в минутах, которое поезд проходит через эти два узла. - Араби представлена с
a
, а Северная Ричмонд-стрит представлена сn
. - Все пути являются двунаправленными.
Например, этот график (представьте, что пути двунаправленные):
Изображение Артема Калинина, через Wikimedia Commons. Используется по лицензии CC BY-SA 3.0 .
будет записано в графе обозначения как:
a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;
Обратите внимание, что этот вход не имеет n
, поэтому это неверный ввод. Ваша программа может делать что угодно, если введено неверное значение.
Вот пример ввода:
21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;
(Это тот же график, что и на изображении выше, с a
заменой на n
и f
заменой на a
).
Мальчик должен добраться с точностью n
до a
21 минуты. Если он пойдет по маршруту n
-> c
-> e
-> d
-> a
, он доберется туда за 20 минут, что вовремя. Мы могли бы представить этот маршрут как список узлов через запятую:
n,c,e,d,a
С другой стороны, маршрут n
-> b
-> c
-> e
-> d
-> a
заставит мальчика занять 27 минут, что не вовремя. Мы могли бы представить этот маршрут так:
n,b,c,e,d,a
Другой возможный маршрут, который заставит мальчика не успеть вовремя:
n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a
Ваша программа должна принимать данные, как описано выше, и на первый взгляд кажется, что они выводят маршрут, который заставит мальчика сделать это вовремя, но фактически выводят маршрут, который заставляет мальчика не делать это вовремя. Для любого заданного входа всегда будет существовать маршрут без обратного отслеживания, который заставляет мальчика не успеть вовремя.
Это закулисный конкурс популярности, поэтому выигрывает участник с наибольшим количеством голосов. Голоса присуждаются за изобретательность в сокрытии ошибки - чем менее очевидна, тем лучше.
Вот несколько примеров графиков для тестирования вашей программы.
Входные данные:
12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;
Визуальное представление (это визуальное представление только для ясности и не является частью задачи):
Возможно выход:
n,d,b,e,a
Входные данные:
10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;
Вот визуальное изображение графика:
Возможно выход:
n,d,a