/*
3500
#include <stdio.h>
int arr[11][11]= {},check[11][11]= {}; // 방문체크
int r, c, i, j, k, p;
char map[11][11]= {};// _표기하려면 이거부터 시작.
int is_zero(int a, int b)
{
int cnt=0;
for(k=a-1; k<=a+1; k++)
{
for(p=b-1; p<=b+1; p++)
{
if(arr[k][p]==1)
{
cnt++; // 주변에 지뢰 있을 시 +1
}
}
}
return cnt;
}
void dfs(int x, int y)
{
if(x<1||x>9||y<1||y>9||check[x][y]==1) return;// 방문체크
check[x][y]=1;// 방문체크
int f = is_zero(x,y);// cnt 값이다.
if(f==0) // 주변에 지뢰 없을 시에는 계속 탐색.
{
map[x][y]='0';
if(check[x-1][y-1]!=1) dfs(x-1, y-1);
if(check[x-1][y]!=1) dfs(x-1, y);
if(check[x-1][y+1]!=1) dfs(x-1, y+1);
if(check[x][y-1]!=1) dfs(x, y-1);
if(check[x][y+1]!=1) dfs(x, y+1);
if(check[x+1][y-1]!=1) dfs(x+1, y-1);
if(check[x+1][y]!=1) dfs(x+1, y);
if(check[x+1][y+1]!=1) dfs(x+1, y+1);
}
else
map[x][y]=f+'0'; // 주변 지뢰 있으면 이 결과 내놓고서 리턴 끝.
}
int main()
{
for(i=1; i<=9; i++)
{
for(j=1; j<=9; j++)
{
scanf("%d", &arr[i][j]);
map[i][j]='_';// 시작이 이거.
}
}
scanf("%d %d", &r, &c);
dfs(r, c);
for(i=1; i<=9; i++)
{
for(j=1; j<=9; j++)
{
if(arr[r][c]==1&&i==r&&j==c) {printf("-1 ");} // 조건 주의, 지뢰 바로 밟을 때.
else printf("%c ",map[i][j]); // 나머지는 프린트.
}
printf("\n");
}
}
3500 지뢰 찾기2
주변에 1이 있으면 개수 쓰고
뒤집을 필요 없는, 이미 지뢰인 칸은 _로 나타내기/
주변 지뢰 개수가 0이 아닌 경우일때까지 확장.
8방향 탐색, 주변에 1 있는만큼 개수++;
한번 바뀔 때마다 다음 탐색에는 영향이 가면 안됨.
*/