ล่าสมบัติทั่วทุกทิศ (explore)

1085

สำหรับข้อนี้ สิ่งแรกที่ควรสังเกตุคือลักษณะของข้อมูลนำเข้านั้นเป็น directed acyclic graph (DAG) เนื่องจากถ้าหากเราสร้างกราฟที่มี vertex เป็นแต่ละห้อง และ edge เป็นประตูและเครื่องขนย้ายมวลสารที่สามารถใช้เพื่อเดินระหว่างห้องได้ จะเห็นได้จากเงื่อนไขในโจทย์ว่าจะไม่สามารถเดินจาก vertex ที่ห้องมีตัวเลขมากกว่าไปห้องที่มีตัวเลขน้อยกว่าได้เลย และจะเห็นได้ว่าเงื่อนไขนี้ทำให้กราฟมี cycle ไม่ได้

ดังนั้น เราสามารถใช้อัลกอริทึม DFS บนกราฟที่สร้างมานี้เพื่อหาว่า vertex ที่ห้องมีตัวเลขมากสุดที่สามารถไปได้จาก vertex ของห้อง 1 คืออะไร

อัลกอริทึมนี้ใช้เวลาการทำงานเท่ากับ O(n+m)O(n + m)