บทนำ
ในความท้าทายนี้เราจะจัดการกับบางกราฟไม่มีทิศทางที่ไม่มีที่สิ้นสุดซึ่งผมเรียกว่ากราฟหารสูง ต่อมน้ำมันเป็นจำนวนเต็มเริ่มตั้งแต่วันที่ 2 มีขอบอยู่ระหว่างสองโหนด<bถ้าแบ่งขและ2 ≥ข กราฟย่อยที่เกิดขึ้นจากช่วง 2 ถึง 18 มีลักษณะดังนี้:
16-8 12 18
\|/ |/|
4 6 9 10 15 14
| |/ |/ |
2 3 5 7 11 13 17
สามารถแสดงให้เห็นว่ากราฟตัวหารสูงที่ไม่มีที่สิ้นสุดเชื่อมต่อกันดังนั้นเราสามารถถามเกี่ยวกับเส้นทางที่สั้นที่สุดระหว่างสองโหนด
อินพุตและเอาต์พุต
ปัจจัยการผลิตของคุณเป็นจำนวนเต็มสองจำนวนและข คุณสามารถสรุปได้ว่า2 ≤≤ข <1000 เอาต์พุตของคุณคือความยาวของเส้นทางที่สั้นที่สุดระหว่างaและbในกราฟตัวหารสูงที่ไม่มีที่สิ้นสุด นี่หมายถึงจำนวนขอบในเส้นทาง
คุณอาจจะพบความจริงต่อไปนี้มีประโยชน์: มีอยู่เสมอเส้นทางที่ดีที่สุดจากเพื่อขที่แรกที่เพิ่มขึ้นและลดลงแล้วและมีเพียงโหนดเข้าชมที่เป็นอย่างเคร่งครัดน้อยกว่า2b 2 โดยเฉพาะอย่างยิ่งตั้งแต่b <1,000คุณจะต้องพิจารณาโหนดที่น้อยกว่า 2 000 000
ตัวอย่าง
พิจารณาปัจจัยการผลิตและ3
32
หนึ่งเส้นทางที่เป็นไปได้ระหว่างโหนด 3 และ 32 คือ
3 -- 6 -- 12 -- 96 -- 32
4
เส้นทางนี้มีสี่ขอบและปรากฎว่าไม่มีเส้นทางที่สั้นลงเพื่อการส่งออกที่ถูกต้องคือ
เป็นอีกตัวอย่างหนึ่งเส้นทางที่ดีที่สุดสำหรับ2
และ25
คือ
2 -- 4 -- 8 -- 40 -- 200 -- 25
5
เพื่อการส่งออกที่ถูกต้องคือ 50 = lcm(2, 25)
ในกรณีนี้ไม่มีเส้นทางที่ดีที่สุดมีโหนด
กฎและการให้คะแนน
คุณสามารถเขียนโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ไม่มีการ จำกัด เวลาหรือหน่วยความจำจึงอนุญาตให้ใช้เดรัจฉานได้
กรณีทดสอบ
2 2 -> 0
2 3 -> 4
2 4 -> 1
2 5 -> 5
3 5 -> 4
6 8 -> 2
8 16 -> 1
12 16 -> 2
16 16 -> 0
2 25 -> 5
3 32 -> 4
2 256 -> 3
60 77 -> 3
56 155 -> 3
339 540 -> 2
6 966 -> 4
7 966 -> 2
11 966 -> 4
2 997 -> 7
991 997 -> 4
FindShortestPath
ละเมิดข้อ จำกัด เกี่ยวกับช่องโหว่มาตรฐานหรือไม่? ถ้าเป็นเช่นนั้นเพียงแจ้งให้เราทราบและฉันจะลบการส่งของฉัน