"ฉันต้องการไปที่ Araby bazaar เพื่อซื้อของขวัญสำหรับที่ฉันตกหลุมรักด้วยอย่างไรก็ตามถ้าฉันมาสายเกินไปร้านค้าทั้งหมดจะถูกปิดและฉันจะไม่สามารถซื้ออะไรได้คุณช่วยได้ไหม ผมได้ไหม "
เป้าหมาย:พาเด็กชายไปที่ Araby จาก North Richmond Street ก่อนที่ร้านค้าทั้งหมดจะปิด
เป้าหมายที่แท้จริง:ตรวจสอบให้แน่ใจว่าเด็กผู้ชายไม่ได้มาถึง Araby ก่อนที่ร้านค้าจะปิด
โปรแกรมของคุณจะรับอินพุตในรูปแบบต่อไปนี้:
<time> <map>
ที่ไหน
<time>
เป็นเวลาสูงสุดที่เด็กชายสามารถใช้เวลาเดินทางเป็นนาที มันเป็นจำนวนเต็มบวก<map>
เป็นกราฟของเส้นทางที่รถไฟสามารถรับได้
นี่คือรูปแบบของกราฟที่ใช้งานได้:
- แต่ละคำสั่งจะจบด้วยเซมิโคลอน
- โหนดในแผนที่ (ซึ่งเป็นตัวแทนของสวิทช์) จะถูกแสดงโดยใช้ตัวอักษรตัวพิมพ์เล็ก
- เส้นทางระหว่างโหนดจะถูกแสดงด้วยไวยากรณ์
a,X,b
โดยที่X
เป็นจำนวนเต็มแทนน้ำหนักของเส้นทาง น้ำหนักของเส้นทางคือเวลาเป็นนาทีรถไฟจะผ่านทั้งสองโหนด - อาราบีเป็นตัวแทนที่มีและนอร์ทริชมอนด์ถนนเป็นตัวแทนที่มี
a
n
- เส้นทางทั้งหมดเป็นแบบสองทิศทาง
ตัวอย่างเช่นกราฟนี้ (เสแสร้งเส้นทางเป็นแบบสองทิศทาง):
ภาพโดย Artyom Kalinin ผ่าน 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