1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| """ # @Time : 2020/10/5 # @Author : Jimou Chen """
a = [[0 for i in range(100)] for j in range(100)]
flag = [[0 for i in range(100)] for j in range(100)]
dx = [0, 1, 0, -1] dy = [1, 0, -1, 0]
min_dis = 99999999
def dfs(x, y, step): if x == p and y == q: global min_dis if step < min_dis: min_dis = step return
'''顺时针试探''' for i in range(0, 4): tx = x + dx[i] ty = y + dy[i] if a[tx][ty] == 1 and flag[tx][ty] == 0: flag[tx][ty] = 1 dfs(tx, ty, step + 1) flag[tx][ty] = 0
return
if __name__ == '__main__': m, n = map(int, input().split()) for i in range(0, m): temp = list(map(int, input().split())) for j in range(0, n): a[i][j] = temp[j]
start_x, start_y = map(int, input().split()) p, q = map(int, input().split())
flag[start_x][start_y] = 1 dfs(start_x, start_y, 0)
print(min_dis)
''' 5 4 1 1 2 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 0 0 3 2 '''
|