if ny == goal[0] and nx == goal[1]: # (제일 중요!!!!!!) 최단경로
print(graph[ny][nx]) # (중요) 바로 출력해버려
return # (중요) 그리고 끝내버려
전에 동빈나에서 나왔던 유형인 것 같은데
다른 점은 아마 한 변의 길이를 받는게 없었던듯? 어쨌든 똑같다
일단 BFS 최단경로 방식으로 풀어나가면 될거같은데
''' 내가 푼 - 백준 1697을 참고하여 (바로 풀었음) '''
from collections import deque
def bfs(L, now, goal, graph):
answer = 0
que = deque([now])
# 체스의 특성대로 이동
dy = [-2, -1, 1, 2, 2, 1, -1, -2]
dx = [-1, -2, -2, -1, 1, 2, 2, 1]
while que:
prev_y, prev_x = que.popleft()
for i in range(8):
ny = prev_y + dy[i]
nx = prev_x + dx[i]
if 0 <= ny < L and 0 <= nx < L and graph[ny][nx] == 0:
graph[ny][nx] = graph[prev_y][prev_x] + 1
que.append([ny, nx])
if ny == goal[0] and nx == goal[1]: # (제일 중요!!!!!!) 최단경로
print(graph[ny][nx]) # (중요) 바로 출력해버려
return # (중요) 그리고 끝내버려
for _ in range(int(input())):
L = int(input())
now = list(map(int,input().split()))
goal = list(map(int,input().split()))
graph = [[0] * L for _ in range(L)]
if now == goal:
print(0)
else:
bfs(L, now, goal, graph)