7562 : 나이트의 이동

풀이

.

코드

#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
typedef pair<int, int> pii;

const int dx[] = { 1,2,2,1,-1,-2,-2,-1 };
const int dy[] = { -2,-1,1,2,2,1,-1,-2 };

int n, x, y, a, b, dst[303][303];
queue<pii> que;

int main() {
    int tc;
    for (scanf("%d", &tc); tc; tc--) {
        scanf("%d %d %d %d %d", &n, &x, &y, &a, &b);
        que.push({ x,y });
        dst[x][y] = 1;
        while (!que.empty()) {
            pii now = que.front();
            que.pop();
            for (int i = 0; i < 8; i++) {
                int nx = now.first + dx[i], ny = now.second + dy[i];
                if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue;
                if (!dst[nx][ny]) {
                    dst[nx][ny] = dst[now.first][now.second] + 1;
                    que.push({ nx,ny });
                }
            }
        }
        printf("%d\n", dst[a][b] - 1);
        memset(dst, 0, sizeof(dst));
    }

    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-06-24 21:58

Read more posts by this author