반응형
#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<string.h>
using namespace std;
int N, M;
int arr[50][50];
bool visit[50][50];
struct Node {
int y;
int x;
int count;
};
int dy[8] = {-1,-1,-1,0,0,1,1,1};
int dx[8] = {-1,0,1,-1,1,-1,0,1};
int main(void)
{
cin >> N >> M;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
cin >> arr[i][j];
}
}
int maxa = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < M; j++)
{
if (!arr[i][j])
{
memset(visit, 0, sizeof(visit));
visit[i][j] = true;
queue<Node> que;
que.push({ i,j,0 });
int mina = 987654321;
while (!que.empty())
{
int y = que.front().y;
int x = que.front().x;
int count = que.front().count;
que.pop();
if (arr[y][x])
{
if (mina > count)
{
mina = count;
}
}
else
{
for (int k = 0; k < 8; k++)
{
int newy = y + dy[k];
int newx = x + dx[k];
if (newy >= 0 && newy < N && newx >= 0 && newx < M)
{
if (!visit[newy][newx])
{
visit[newy][newx] = true;
que.push({ newy,newx,count + 1 });
}
}
}
}
}
if (maxa < mina)
{
maxa = mina;
}
}
}
}
cout << maxa << endl;
}
반응형
'Algorithm' 카테고리의 다른 글
백준 4991번 로봇 청소기 (0) | 2020.07.13 |
---|---|
백준 2422번 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 (0) | 2020.07.12 |
백준 14426번 접두사 찾기 (0) | 2020.07.12 |
백준 14425번 문자열 집합 (0) | 2020.07.10 |
백준 16932번 모양 만들기 (0) | 2020.07.10 |