"Aşık olduğum kişiye hediye almak için Araby pazarına gitmek istiyorum. Ancak, çok geç kalırsam tüm mağazalar kapanacak ve hiçbir şey satın alamayacağım. ben? "
Amaç: Tüm mağazalar kapanmadan önce çocuğu North Richmond Street'ten Araby'ye götür.
Gerçek Hedef: Çocuğun dükkanlar kapanmadan Araby'ye gelmediğinden emin olun.
Programınız aşağıdaki biçimde girdi alacaktır:
<time> <map>
nerede
<time>
çocuğun dakika olarak seyahat edebileceği maksimum süredir. Pozitif bir tamsayıdır.<map>
trenin izleyebileceği rotaların bir grafiğidir.
Grafiğin biçimi şu şekilde çalışır:
- Her ifade noktalı virgülle sonlandırılır.
- Haritadaki düğümler (anahtarları temsil eder) tek küçük harfler kullanılarak temsil edilir.
- Düğümler arasındaki bir yol sözdizimi ile temsil edilir
a,X,b
, buradaX
yolun ağırlığını temsil eden bir tamsayıdır. Yolun ağırlığı, trenin bu iki düğümden geçmesi için geçen süredir. - Araby,
a
Kuzey Richmond Caddesin
. - Tüm yollar çift yönlüdür.
Örneğin, bu grafik (yolların çift yönlü olduğunu varsayalım):
Görüntü Wikimedia Commons aracılığıyla Artyom Kalinin tarafından. CC BY-SA 3.0 lisansı altında kullanılır .
grafik gösterimine şu şekilde kaydedilir:
a,4,b;a,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,f;
Bu girişin bir işareti olmadığından, n
geçersiz bir giriş olduğunu unutmayın. Geçersiz bir giriş verilirse programınız her şeyi yapabilir.
İşte bir örnek giriş:
21 n,4,b;n,2,c;b,5,c;b,10,d;c,3,e;e,4,d;d,11,a;
(Yukarıdaki resim ile aynı grafikle a
değiştirilir n
ve f
değiştirilir a
).
Oğlan dan almak gerekir n
için a
21 dakika içinde. n
-> c
-> e
-> d
-> rotasını a
alırsa, 20 dakika içinde oraya varır, ki bu da zamanındadır. Bu rotayı virgülle ayrılmış bir düğüm listesi olarak gösterebiliriz:
n,c,e,d,a
Öte yandan, n
-> b
-> c
-> e
-> d
-> rotası a
, çocuğun 27 dakika sürmesine neden olur, bu da zaman içinde değildir. O rotayı şu şekilde temsil edebiliriz:
n,b,c,e,d,a
Çocuğun zamanında yapmamasına neden olacak bir başka olası yol:
n,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,b,c,e,d,a
Programınız girişi yukarıda açıklandığı gibi almalı ve ilk bakışta çocuğun zamanında yapmasına neden olacak bir yol çıkmış gibi görünmelidir, ancak aslında çocuğun zaman içinde yapmamasına neden olan bir yol çıkar. Herhangi bir giriş için, her zaman geri izlemeden, çocuğun zamanında yapmamasına neden olan bir rota olacaktır.
Bu el yapımı bir popülerlik yarışmasıdır, bu yüzden en çok oy alan giriş kazanır. Oylama hatayı gizleme konusunda ustalık için verilir - ne kadar az belirgin olursa o kadar iyidir.
Programınızı test etmek için bazı örnek grafikler.
Giriş:
12 a,2,c;a,2,e;b,5,c;b,4,d;b,11,e;d,7,n;e,4,n;
Görsel bir sunum (bu görsel sunum sadece açıklık içindir ve mücadelenin bir parçası değildir):
Bir olası çıkışı:
n,d,b,e,a
Giriş:
10 a,8,b;a,12,d;b,1,n;d,11,n;a,1,n;
Grafiğin görsel bir görüntüsü:
Bir olası çıkışı:
n,d,a