https://www.acmicpc.net/problem/7576
๋ฌธ์
์ฒ ์์ ํ ๋งํ ๋์ฅ์์๋ ํ ๋งํ ๋ฅผ ๋ณด๊ดํ๋ ํฐ ์ฐฝ๊ณ ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํ ๋งํ ๋ ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฒฉ์ ๋ชจ์ ์์์ ์นธ์ ํ๋์ฉ ๋ฃ์ด์ ์ฐฝ๊ณ ์ ๋ณด๊ดํ๋ค.
์ฐฝ๊ณ ์ ๋ณด๊ด๋๋ ํ ๋งํ ๋ค ์ค์๋ ์ ์ต์ ๊ฒ๋ ์์ง๋ง, ์์ง ์ต์ง ์์ ํ ๋งํ ๋ค๋ ์์ ์ ์๋ค. ๋ณด๊ด ํ ํ๋ฃจ๊ฐ ์ง๋๋ฉด, ์ต์ ํ ๋งํ ๋ค์ ์ธ์ ํ ๊ณณ์ ์๋ ์ต์ง ์์ ํ ๋งํ ๋ค์ ์ต์ ํ ๋งํ ์ ์ํฅ์ ๋ฐ์ ์ต๊ฒ ๋๋ค. ํ๋์ ํ ๋งํ ์ ์ธ์ ํ ๊ณณ์ ์ผ์ชฝ, ์ค๋ฅธ์ชฝ, ์, ๋ค ๋ค ๋ฐฉํฅ์ ์๋ ํ ๋งํ ๋ฅผ ์๋ฏธํ๋ค. ๋๊ฐ์ ๋ฐฉํฅ์ ์๋ ํ ๋งํ ๋ค์๊ฒ๋ ์ํฅ์ ์ฃผ์ง ๋ชปํ๋ฉฐ, ํ ๋งํ ๊ฐ ํผ์ ์ ์ ๋ก ์ต๋ ๊ฒฝ์ฐ๋ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ฒ ์๋ ์ฐฝ๊ณ ์ ๋ณด๊ด๋ ํ ๋งํ ๋ค์ด ๋ฉฐ์น ์ด ์ง๋๋ฉด ๋ค ์ต๊ฒ ๋๋์ง, ๊ทธ ์ต์ ์ผ์๋ฅผ ์๊ณ ์ถ์ด ํ๋ค.
ํ ๋งํ ๋ฅผ ์ฐฝ๊ณ ์ ๋ณด๊ดํ๋ ๊ฒฉ์๋ชจ์์ ์์๋ค์ ํฌ๊ธฐ์ ์ต์ ํ ๋งํ ๋ค๊ณผ ์ต์ง ์์ ํ ๋งํ ๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ๋ฉฐ์น ์ด ์ง๋๋ฉด ํ ๋งํ ๋ค์ด ๋ชจ๋ ์ต๋์ง, ๊ทธ ์ต์ ์ผ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋จ, ์์์ ์ผ๋ถ ์นธ์๋ ํ ๋งํ ๊ฐ ๋ค์ด์์ง ์์ ์๋ ์๋ค.
์ ๋ ฅ
์ฒซ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๋ ์ ์ M,N์ด ์ฃผ์ด์ง๋ค. M์ ์์์ ๊ฐ๋ก ์นธ์ ์, N์ ์์์ ์ธ๋ก ์นธ์ ์๋ฅผ ๋ํ๋ธ๋ค. ๋จ, 2 ≤ M,N ≤ 1,000 ์ด๋ค. ๋์งธ ์ค๋ถํฐ๋ ํ๋์ ์์์ ์ ์ฅ๋ ํ ๋งํ ๋ค์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ์ฆ, ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์๋ ์์์ ๋ด๊ธด ํ ๋งํ ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ํ๋์ ์ค์๋ ์์ ๊ฐ๋ก์ค์ ๋ค์ด์๋ ํ ๋งํ ์ ์ํ๊ฐ M๊ฐ์ ์ ์๋ก ์ฃผ์ด์ง๋ค. ์ ์ 1์ ์ต์ ํ ๋งํ , ์ ์ 0์ ์ต์ง ์์ ํ ๋งํ , ์ ์ -1์ ํ ๋งํ ๊ฐ ๋ค์ด์์ง ์์ ์นธ์ ๋ํ๋ธ๋ค.
ํ ๋งํ ๊ฐ ํ๋ ์ด์ ์๋ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฌ๋ฌ๋ถ์ ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์ ๋๊น์ง์ ์ต์ ๋ ์ง๋ฅผ ์ถ๋ ฅํด์ผ ํ๋ค. ๋ง์ฝ, ์ ์ฅ๋ ๋๋ถํฐ ๋ชจ๋ ํ ๋งํ ๊ฐ ์ต์ด์๋ ์ํ์ด๋ฉด 0์ ์ถ๋ ฅํด์ผ ํ๊ณ , ํ ๋งํ ๊ฐ ๋ชจ๋ ์ต์ง๋ ๋ชปํ๋ ์ํฉ์ด๋ฉด -1์ ์ถ๋ ฅํด์ผ ํ๋ค.
ํ์ด
bfs๋ฅผ ์ด์ฉํ ํ์ด.. ์ธ๋ฐ ์์์ง์ ์ด ์ฌ๋ฌ๊ฐ์ธ bfs
์์์ง์ ๋ง ๋ฐ๋ก queue์ push ํด๋๋ฉด ํ ์ ์๋ค
๋ค๋ง ์๊ฐ์ง๋ ๋ชปํ ๋ถ๋ถ์ด ์์๋๋ฐ..
์๊พธ 23% ์ธ๊ฐ 24%์์ ํ๋ ธ์ต๋๋ค๊ฐ ๋จ๋๊ฒ์ด์๋คใ ใ
์๊ณ ๋ณด๋ ๋ด๊ฐ bfs ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ทธ๋์ ๊ฐ๋ก ์ธ๋ก๋ฅผ ๋ฌด์ํ๊ณ ํ์๊ธฐ ๋๋ฌธ์ด์๋๋ฐ
์ฌ์ค bfs ์์ฒด๊ฐ ํ๊ณผ ์ด ๊ธธ์ด๊ฐ ์ค์ํ๊ฑด ์๋๋ผ ๊ทธ๋์ ์ ํ๋ ธ์๋๋ฐ
์ด๋ ์ค์ํ์ง ์์๊ฑด ๋ง์ง๋ง!
์ ์ด๋ ์ผ๊ด์ฑ์ ์์ด์ผํ๋ค๋๊ฒ
์ด์ค for๋ฌธ์ ๋๋ฆด๋
์ ๋ ฅ์์ m n ์์๋ก ๋๋ ธ์ผ๋ฉด
์ถ๋ ฅ์์๋ m n ์์๋ก ๋๋ ค์ผํจ
์ผ๋ฐ์ ์ผ๋ก๋ ํ (์ธ๋ก๊ธธ์ด) -> ์ด (๊ฐ๋ก๊ธธ์ด) ์ด ์์๋ก ๋๋ฆฌ๋
์ฐธ๊ณ ํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค
// Authored by : seondal
// ํ์ด : https://whkakrkr.tistory.com/
// Co-authored by : -
//#include <bits/stdc++.h>
#include <iostream>
#include <queue>
using namespace std;
int board[1001][1001];
int dis[1001][1001];
int dx[4] = {1,0,-1,0};
int dy[4] = {0,1,0,-1};
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
queue<pair<int, int>> q;
// ์
๋ ฅ
int m, n;
cin >> n >> m;
for(int i=0; i<m; i++)
for(int j=0; j<n; j++){
cin >> board[i][j];
if(board[i][j] == 0) dis[i][j] = -1; // ์ต์ง ์์ ํ ๋งํ = ๋ฐฉ๋ฌธํ์ง ์์
if(board[i][j] == 1) q.push({i,j}); // ์ด๋ฏธ ์ต์ ํ ๋งํ = ์์์ง์
}
// ๊ณ์ฐ
while(!q.empty()){
pair<int, int> current = q.front();
q.pop();
for(int dir=0; dir<4; dir++) {
int x = current.first + dx[dir];
int y = current.second + dy[dir];
if(x<0 || x>=m || y<0 || y>=n) continue;
if(dis[x][y] >= 0) continue;
dis[x][y] = dis[current.first][current.second] + 1;
q.push({x,y});
}
}
// ์ถ๋ ฅ
int ans=0;
for(int i=0; i<m; i++){
for(int j=0; j<n; j++){
if(dis[i][j] == -1){
cout << -1;
return 0;
}
if(dis[i][j] > ans) ans = dis[i][j];
}
}
cout << ans;
return 0;
}
/*
*/
'๐ Baaaaaarking > 0x09๊ฐ - BFS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ S2][C++] ๋ฐฑ์ค 7562๋ฒ: ๋์ดํธ์ ์ด๋ (0) | 2022.03.15 |
---|---|
[BOJ G5][C++] ๋ฐฑ์ค 7569๋ฒ: ํ ๋งํ (0) | 2022.03.10 |
[BOJ G5][C++] ๋ฐฑ์ค 10026๋ฒ: ์ ๋ก์์ฝ (0) | 2022.03.08 |
[BOJ S1][C++] ๋ฐฑ์ค 2178๋ฒ : ๋ฏธ๋ก ํ์ (0) | 2022.03.08 |
[BOJ S2][C++] ๋ฐฑ์ค 1012๋ฒ : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.03.06 |