https://www.acmicpc.net/problem/7562
๋ฌธ์
์ฒด์คํ ์์ ํ ๋์ดํธ๊ฐ ๋์ฌ์ ธ ์๋ค. ๋์ดํธ๊ฐ ํ ๋ฒ์ ์ด๋ํ ์ ์๋ ์นธ์ ์๋ ๊ทธ๋ฆผ์ ๋์์๋ค. ๋์ดํธ๊ฐ ์ด๋ํ๋ ค๊ณ ํ๋ ์นธ์ด ์ฃผ์ด์ง๋ค. ๋์ดํธ๋ ๋ช ๋ฒ ์์ง์ด๋ฉด ์ด ์นธ์ผ๋ก ์ด๋ํ ์ ์์๊น?
์ ๋ ฅ
์ ๋ ฅ์ ์ฒซ์งธ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค.
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ์ธ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฒซ์งธ ์ค์๋ ์ฒด์คํ์ ํ ๋ณ์ ๊ธธ์ด l(4 ≤ l ≤ 300)์ด ์ฃผ์ด์ง๋ค. ์ฒด์คํ์ ํฌ๊ธฐ๋ l × l์ด๋ค. ์ฒด์คํ์ ๊ฐ ์นธ์ ๋ ์์ ์ {0, ..., l-1} × {0, ..., l-1}๋ก ๋ํ๋ผ ์ ์๋ค. ๋์งธ ์ค๊ณผ ์ ์งธ ์ค์๋ ๋์ดํธ๊ฐ ํ์ฌ ์๋ ์นธ, ๋์ดํธ๊ฐ ์ด๋ํ๋ ค๊ณ ํ๋ ์นธ์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค ๋์ดํธ๊ฐ ์ต์ ๋ช ๋ฒ๋ง์ ์ด๋ํ ์ ์๋์ง ์ถ๋ ฅํ๋ค.
ํ์ด
BFS ์ด์ฉํด์ ๊ฐ๋จํ๊ฒ ํ์ด ๊ฐ๋ฅํ๋ค.
๋จ ๋์ดํธ์ ์ด๋๋ฐฉํฅ์ ๋ง๊ฒ dx dy ๋ฐฐ์ด๋ค์ ์ค์ ํด์ฃผ๊ณ
์ด์ฐจ์ ๋ฐฐ์ด์ ๊ฑฐ๋ฆฌ๋ง ๋ด์๋ ์ถฉ๋ถํ๋ค.
์ฝ๊ฐ์ ๋ณํ์ด ๊ฐํด์ง BFS ๋ฌธ์
// Authored by : seondal
// ํ์ด : https://whkakrkr.tistory.com/
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
using namespace std;
int dis[302][302];
int dx[8] = {-2, -1, 1, 2, -2, -1, 1, 2};
int dy[8] = {1, 2, 2, 1, -1, -2, -2, -1};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while(t--){
queue<pair<int, int>> q;
int n, a, b;
cin >> n; // ์นธ ์ค์
// ์ด๊ธฐํ
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
dis[i][j] = -1;
}
}
cin >> a >> b; // ์ถ๋ฐ์ง ์ค์
dis[a][b] = 0;
q.push({a,b});
cin >> a >> b; // ๋์ฐฉ์ง ์ค์
while(!q.empty()){
pair<int, int> current = q.front();
q.pop();
for(int dir=0; dir<8; dir++){
int x = current.first + dx[dir];
int y = current.second + dy[dir];
if(x<0 || x>=n || y<0 || y>=n) continue;
if(dis[x][y] >= 0) continue;
dis[x][y] = dis[current.first][current.second] + 1;
q.push({x,y});
}
}
cout << dis[a][b] << "\n";
}
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x09๊ฐ - BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ G4][C++] ๋ฐฑ์ค 5427๋ฒ : ๋ถ (0) | 2022.03.19 |
---|---|
[BOJ G4][C++] ๋ฐฑ์ค 4179๋ฒ: ๋ถ! (0) | 2022.03.16 |
[BOJ G5][C++] ๋ฐฑ์ค 7569๋ฒ: ํ ๋งํ (0) | 2022.03.10 |
[BOJ G5][C++] ๋ฐฑ์ค 7576๋ฒ: ํ ๋งํ (0) | 2022.03.09 |
[BOJ G5][C++] ๋ฐฑ์ค 10026๋ฒ: ์ ๋ก์์ฝ (0) | 2022.03.08 |