นักปรัชญาได้ไตร่ตรองปัญหารถเข็นมานานแล้ว น่าเสียดายที่ยังไม่มีมนุษย์คนใดแก้ปัญหานี้ได้ โชคดีที่ในฐานะโปรแกรมเมอร์เราสามารถใช้คอมพิวเตอร์เพื่อแก้ปัญหาให้เราได้!
อินพุต
โปรแกรมของคุณจะทำหน้าที่ป้อนกราฟกำกับ (จำกัด ) (โดยมีขอบอย่างใดอย่างหนึ่งมากที่สุดจากxถึงถึงyสำหรับใด ๆxและy) พร้อมโหนดที่กำหนดและจำนวนเต็มที่ไม่ใช่ค่าลบที่แนบมากับแต่ละขอบ (แสดงถึงจำนวนคนที่ผูกติดกับแทร็กนั้น) . นอกจากนี้ทุกโหนดมี edge exit อย่างน้อยหนึ่งตัว
รถเข็นเริ่มต้นที่โหนดที่กำหนด กลับกันถ้ารถเข็นที่โหนดx, (x,y)ประโยชน์เลือกขอบ yคนที่อยู่บนขอบที่ตายและรถเข็นอยู่ในขณะนี้ที่ขอบ กระบวนการนี้จะดำเนินต่อไปตลอดกาล
โปรดทราบว่าผู้คนสามารถตายได้เพียงครั้งเดียวดังนั้นหากขอบ(x,y)มีnคนผูกไว้กับมันและรถเข็นวิ่งข้ามพวกเขาพูดว่า 100 ครั้งมันจะยังคงส่งผลให้เกิดการnเสียชีวิต
เอาท์พุต
ผู้ใช้ประโยชน์ได้เลือกในลักษณะที่จะลดจำนวนคนที่ตาย (ซึ่งรับประกันว่าจะมี จำกัด เนื่องจากมีเพียงคน จำกัด ) โปรแกรมของคุณจะแสดงผลหมายเลขนี้
รูปแบบอินพุต
คุณอาจใช้กราฟอินพุตในแบบที่คุณต้องการ ตัวอย่างเช่นคุณสามารถใช้มันเป็นเมทริกซ์และนับโหนดที่กำหนดเป็นหนึ่งที่มีข้อความ 0. x1,y1,n1;x2,y2,n2;...หรือคุณอาจจะใช้สิ่งที่ต้องการ ตัวอย่างเช่น0,a,0;a,b,5;a,c,1;b,b,0;c,c,0เพื่อเป็นตัวแทนของปัญหารถเข็นมาตรฐาน (มีลูปที่ส่วนท้าย)
Testcases
0,a,0;a,b,5;a,c,1;b,b,0;c,c,0-> 1 (ไปจาก 0 ถึง a, a ถึง c (ฆ่าหนึ่งคน) จากนั้นวนลูปจากรถเข็นไปยัง c)0,0,1;0,a,5;a,a,0-> 1 (เดินจาก 0 เป็น 0 วิ่งต่อ 1 คนตลอดชั่วนิรันดร์)0,a,5;0,b,1;a,a,1;b,b,6-> 6 (0 -> a -> a -> a -> a -> ... (โปรดทราบว่าคำตอบที่โลภของการไปที่ b จะไม่ถูกต้อง))0,a,1;0,b,5;a,b,1;b,a,1-> 3 (0 -> a -> b -> a -> b -> ... )0,a,1;0,b,1;a,a,0;b,b,0-> 1 (โปรดทราบว่ามีสองตัวเลือกที่แตกต่างกันซึ่งผู้ใช้อาจใช้ว่าทั้งสองฆ่าเพียงคนเดียว)
นี่คือรหัสกอล์ฟดังนั้นคำตอบที่สั้นที่สุดชนะ! โชคดี.
หมายเหตุ: จะไม่มีลูปลูปป่วยและการดริฟท์มัลติแทร็คถูกแบน นอกจากนี้แม้ว่าฉันชอบที่จะคิดถึงปัญหานี้ในแง่ของกฎสามข้อของอาซิมอฟ (/ s) ปีเตอร์เทย์เลอร์ได้ตั้งข้อสังเกตไว้ในกล่องทรายว่าปัญหานี้มีปัญหาทางคณิตศาสตร์เทียบเท่ากับการค้นหาโรห์ .
