grid = [[22, 85, 42, 19, 75, 56, 3, 8, 16, 96, 78, 37, 14, 70, 80, 6, 84, 23, 79, 63, 10, 97, 93, 18, 44, 59, 18, 5, 70, 82, 34, 13, 75, 44, 70, 80, 62, 86, 68, 26], [75, 73, 40, 56, 27, 4, 19, 15, 94, 82, 21, 25, 66, 40, 90, 52, 10, 33, 79, 33, 72, 10, 55, 47, 22, 76, 45, 92, 47, 66, 86, 21, 53, 11, 92, 9, 88, 64, 38, 7], [3, 43, 7, 30, 26, 87, 76, 17, 51, 73, 9, 54, 75, 69, 76, 17, 63, 51, 89, 82, 44, 12, 76, 7, 41, 63, 55, 12, 65, 10, 7, 74, 21, 23, 85, 62, 87, 62, 88, 48], [62, 46, 37, 75, 85, 11, 97, 71, 28, 69, 58, 10, 47, 46, 73, 84, 90, 49, 12, 93, 65, 4, 89, 1, 84, 2, 36, 96, 52, 46, 61, 28, 90, 16, 93, 66, 49, 54, 92, 60], [59, 79, 44, 70, 93, 65, 13, 94, 93, 39, 22, 28, 8, 29, 79, 41, 85, 69, 90, 80, 45, 52, 1, 78, 20, 77, 29, 34, 25, 42, 8, 92, 13, 61, 59, 86, 45, 85, 81, 99], [37, 3, 3, 17, 52, 78, 64, 78, 54, 15, 63, 21, 9, 76, 77, 77, 20, 82, 86, 14, 43, 9, 29, 52, 16, 39, 34, 60, 64, 39, 92, 83, 89, 37, 50, 95, 13, 13, 13, 12], [14, 3, 95, 52, 52, 91, 34, 62, 28, 70, 38, 27, 46, 97, 54, 66, 5, 21, 80, 88, 50, 41, 91, 78, 21, 55, 48, 70, 1, 36, 2, 42, 29, 2, 83, 28, 84, 35, 38, 86], [42, 49, 61, 57, 49, 10, 12, 12, 33, 17, 56, 73, 59, 27, 7, 85, 76, 6, 69, 2, 78, 68, 67, 91, 75, 18, 83, 29, 3, 85, 37, 86, 20, 47, 10, 31, 99, 85, 23, 2], [66, 18, 61, 15, 84, 43, 61, 95, 57, 19, 57, 25, 69, 34, 9, 12, 95, 10, 54, 89, 32, 50, 60, 46, 76, 51, 48, 13, 66, 8, 85, 86, 14, 2, 71, 68, 42, 79, 11, 74], [43, 96, 22, 52, 97, 32, 32, 80, 9, 39, 27, 5, 91, 30, 9, 50, 60, 2, 75, 5, 4, 4, 41, 83, 24, 9, 77, 10, 44, 58, 32, 2, 24, 4, 57, 36, 53, 67, 14, 6], [41, 87, 2, 84, 80, 18, 9, 47, 68, 64, 26, 54, 46, 61, 54, 79, 73, 49, 33, 17, 77, 85, 13, 63, 4, 82, 46, 97, 49, 83, 97, 50, 11, 91, 5, 88, 42, 13, 13, 92], [41, 9, 62, 97, 34, 1, 26, 37, 97, 20, 7, 65, 3, 66, 11, 78, 82, 86, 70, 67, 93, 47, 24, 29, 27, 81, 26, 31, 91, 25, 31, 29, 16, 24, 8, 5, 41, 22, 54, 21], [60, 3, 86, 58, 2, 87, 1, 31, 21, 74, 28, 81, 51, 15, 47, 84, 5, 83, 46, 74, 4, 12, 83, 63, 39, 48, 79, 9, 42, 84, 33, 38, 58, 88, 71, 15, 22, 94, 9, 64], [69, 75, 82, 51, 91, 91, 86, 58, 88, 89, 96, 4, 56, 20, 13, 1, 51, 75, 82, 6, 16, 48, 85, 55, 19, 78, 14, 27, 44, 17, 29, 91, 95, 33, 76, 37, 36, 4, 16, 1], [1, 91, 5, 13, 29, 43, 6, 66, 82, 70, 3, 9, 18, 44, 96, 54, 39, 27, 36, 13, 62, 81, 73, 52, 95, 62, 84, 41, 49, 13, 86, 24, 70, 17, 47, 43, 9, 44, 66, 64], [28, 27, 59, 25, 41, 3, 37, 59, 4, 60, 15, 40, 98, 23, 56, 60, 98, 58, 17, 47, 46, 94, 44, 94, 93, 78, 52, 36, 91, 67, 32, 21, 32, 20, 69, 58, 55, 73, 26, 6], [68, 10, 89, 20, 35, 74, 99, 50, 29, 79, 45, 54, 16, 23, 96, 27, 81, 21, 56, 4, 93, 17, 97, 72, 33, 58, 74, 50, 86, 64, 17, 59, 47, 14, 90, 58, 48, 71, 91, 94], [51, 17, 71, 78, 75, 36, 16, 89, 1, 39, 59, 20, 18, 66, 88, 80, 65, 42, 40, 42, 29, 88, 25, 23, 72, 4, 28, 50, 69, 99, 78, 34, 65, 81, 40, 99, 87, 4, 4, 28], [34, 54, 37, 32, 29, 68, 49, 3, 49, 16, 62, 22, 2, 73, 28, 33, 25, 16, 27, 1, 36, 59, 65, 28, 88, 40, 64, 34, 23, 75, 84, 98, 88, 4, 9, 79, 89, 97, 84, 84], [61, 57, 9, 22, 59, 94, 40, 3, 20, 84, 2, 17, 38, 54, 38, 97, 58, 69, 95, 99, 57, 77, 76, 79, 20, 28, 87, 13, 85, 36, 2, 23, 71, 46, 26, 51, 52, 34, 98, 21], [74, 94, 27, 14, 62, 32, 10, 57, 51, 44, 13, 95, 13, 57, 5, 87, 30, 68, 10, 4, 40, 94, 77, 18, 13, 54, 95, 8, 1, 59, 61, 66, 62, 5, 96, 67, 91, 14, 33, 35], [46, 9, 59, 90, 30, 90, 50, 3, 37, 75, 17, 50, 80, 80, 69, 21, 85, 45, 43, 62, 85, 90, 71, 75, 98, 87, 95, 3, 89, 58, 82, 43, 6, 55, 81, 57, 91, 80, 85, 50], [40, 82, 2, 50, 60, 8, 23, 3, 34, 12, 4, 37, 66, 90, 76, 94, 10, 89, 21, 1, 22, 68, 91, 61, 9, 35, 71, 94, 61, 17, 71, 8, 63, 42, 32, 86, 48, 91, 87, 91], [43, 47, 6, 2, 71, 64, 98, 51, 44, 73, 81, 11, 16, 58, 10, 10, 69, 54, 47, 41, 54, 58, 10, 94, 32, 99, 82, 87, 51, 87, 17, 61, 26, 8, 84, 28, 75, 95, 47, 89], [50, 27, 1, 22, 21, 67, 46, 11, 76, 11, 12, 7, 17, 72, 21, 96, 54, 75, 13, 70, 47, 98, 10, 88, 38, 8, 89, 95, 45, 62, 57, 82, 51, 92, 64, 31, 64, 58, 97, 8], [51, 72, 35, 73, 59, 26, 6, 98, 47, 35, 5, 62, 77, 19, 83, 13, 76, 74, 8, 24, 61, 56, 46, 49, 48, 63, 16, 33, 37, 49, 77, 35, 22, 48, 33, 42, 20, 67, 54, 31], [28, 42, 25, 5, 46, 28, 43, 4, 14, 92, 5, 1, 63, 6, 91, 51, 35, 70, 19, 48, 7, 45, 4, 95, 74, 23, 75, 49, 41, 21, 65, 94, 76, 66, 32, 65, 72, 5, 98, 99], [9, 67, 33, 84, 73, 55, 8, 54, 14, 40, 69, 4, 71, 84, 45, 55, 15, 20, 52, 42, 96, 11, 44, 6, 73, 59, 90, 36, 19, 54, 23, 98, 25, 30, 28, 62, 15, 22, 10, 64], [49, 97, 10, 84, 96, 10, 74, 5, 8, 13, 9, 60, 93, 15, 59, 14, 86, 22, 28, 25, 22, 70, 62, 99, 54, 31, 73, 18, 73, 70, 64, 92, 91, 68, 58, 51, 37, 94, 55, 84], [52, 44, 65, 41, 44, 51, 44, 87, 26, 2, 49, 94, 58, 52, 34, 1, 3, 64, 10, 82, 34, 66, 19, 70, 2, 67, 42, 91, 64, 7, 25, 99, 36, 89, 20, 19, 7, 10, 33, 15], [59, 67, 87, 49, 86, 2, 24, 50, 20, 44, 14, 7, 5, 6, 39, 72, 99, 32, 11, 10, 97, 1, 34, 88, 2, 17, 17, 39, 83, 77, 63, 72, 62, 56, 6, 95, 85, 30, 92, 13], [91, 98, 83, 52, 21, 62, 93, 48, 5, 17, 36, 23, 67, 47, 48, 71, 51, 29, 67, 24, 5, 38, 68, 94, 13, 44, 28, 14, 67, 34, 58, 3, 80, 81, 28, 87, 44, 13, 73, 9], [27, 25, 98, 33, 78, 36, 15, 54, 55, 51, 29, 12, 92, 90, 3, 73, 79, 51, 39, 4, 74, 43, 4, 36, 93, 83, 15, 66, 57, 73, 65, 56, 23, 7, 42, 18, 56, 39, 92, 36], [24, 89, 93, 61, 32, 57, 87, 85, 30, 2, 16, 56, 37, 30, 80, 28, 86, 28, 7, 62, 66, 70, 2, 74, 80, 5, 31, 84, 56, 92, 12, 41, 31, 37, 95, 43, 5, 89, 51, 4], [63, 23, 79, 96, 68, 20, 71, 43, 90, 31, 98, 50, 4, 58, 39, 28, 49, 34, 53, 98, 67, 59, 33, 96, 35, 57, 37, 69, 90, 92, 91, 2, 70, 43, 58, 26, 45, 27, 12, 17], [76, 86, 5, 45, 95, 43, 56, 10, 39, 30, 9, 48, 97, 46, 85, 47, 24, 50, 94, 63, 91, 54, 8, 26, 35, 77, 76, 96, 5, 38, 2, 34, 84, 14, 19, 51, 28, 99, 32, 12], [51, 93, 70, 37, 9, 89, 5, 24, 93, 99, 87, 69, 87, 38, 32, 44, 86, 56, 11, 61, 1, 40, 49, 41, 51, 3, 30, 44, 10, 68, 83, 69, 72, 63, 86, 98, 11, 19, 41, 84], [46, 82, 26, 57, 74, 72, 19, 68, 37, 52, 59, 86, 78, 37, 70, 89, 88, 74, 70, 22, 25, 17, 12, 52, 38, 64, 82, 59, 38, 81, 19, 87, 96, 21, 3, 44, 69, 80, 76, 62], [2, 96, 21, 17, 15, 66, 6, 86, 77, 48, 53, 70, 47, 69, 37, 28, 8, 28, 41, 5, 8, 92, 86, 71, 48, 14, 59, 97, 6, 53, 36, 73, 76, 77, 92, 83, 49, 23, 88, 93], [91, 23, 6, 2, 54, 95, 57, 31, 63, 81, 94, 78, 48, 59, 39, 2, 95, 23, 54, 92, 97, 40, 85, 56, 24, 43, 97, 71, 52, 46, 58, 25, 73, 98, 62, 18, 93, 85, 66, 47]]
ans = 44
import heapq as hq
def shallowest_path(grid):
n, m = len(grid), len(grid[0])
dist = {(i, j): (float('inf'), float('inf')) for i in range(n) for j in range(m)}
prev = {(i, j): None for i in range(n) for j in range(m)}
for i in range(n):
dist[(i, 0)] = (grid[i][0], 1)
pq = [(grid[i][0], 1, (i, 0)) for i in range(n)]
hq.heapify(pq)
while pq:
d, l, (x, y) = hq.heappop(pq)
if (d, l) != dist[(x, y)]:
continue
if y == m - 1:
end = (x, y)
break
for dx, dy in ((-1, 0), (1, 0), (0, 1), (0, -1), (1, 1), (-1, 1), (1, -1), (-1, -1)):
nx, ny = x + dx, y + dy
if 0 <= nx < n and 0 <= ny < m:
nd = max(grid[nx][ny], dist[(x, y)][0])
if nd < dist[(nx, ny)][0] or nd == dist[(nx, ny)][0] and l + 1 < dist[(nx, ny)][1]:
dist[(nx, ny)] = (nd, l + 1)
prev[(nx, ny)] = (x, y)
hq.heappush(pq, (nd, l + 1, (nx, ny)))
# reconstruct path (list of node indices)
path = []
cur = end
while cur is not None:
path.append(cur)
cur = prev[cur]
path.reverse()
return path
s = shallowest_path(grid)
print(s)
To embed this project on your website, copy the following code and paste it into your website's HTML: