กรณีที่ไม่มีผีตัวใดที่สามารถเดินไปหา Pacman ได้เลย เราจะชนะเสมอ
กำหนดให้ เป็นเวลาที่น้อยที่สุดที่เป็นไปได้ที่จะมีผีอยู่ในตำแหน่ง ถ้าผีไม่สามารถเดินไปถึงได้ จะให้มีค่าเป็น ตารางนี้สามารถคำนวณได้ด้วยอัลกอริธึม Multiple Source Shortest Path ทั่วไป เช่น Dijkstra's หรือ BFS ก็ได้ในกรณีนี้
กำหนดให้ เป็นเวลาน้อยที่สุดที่เป็นไปได้ที่ pacman จะเดินไปที่ช่อง
เนื่องจาก Pacman จะสามารถเดินไปที่ตำแหน่ง ได้ก็ต่อเมื่อมันสามารถเดินไปในเวลาที่น้อยกว่าผีเท่านั้น เราจึงต้องพิจารณาด้วยว่า จะต้องมีค่าน้อยกว่า เสมอ ไม่เช่นนั้นเราจะกำหนดให้ มีค่าเป็น
เราจะชนะก็ต่อเมื่อมีคู่อันดับ ใดๆที่มีค่าเท่ากับ
Time-complexity:
ตัวอย่างโค้ดคำนวณตาราง
while(!q.empty()) { int x, y; auto[x, y] = q.front(); q.pop(); for(int d = 0; d < 4; d++) { int xx = x + dx[d], yy = y + dy[d]; if(!valid(xx,yy)) continue; if(pacman[xx][yy] == inf && pacman[x][y] + 1 < ghost[xx][yy]) { pacman[xx][yy] = pacman[x][y] + 1; q.push({xx, yy}); } } }