#include <stdio.h>
//#include <stdlib.h>
int che[100][100]={0};
int cnt=0;
int n, m;
int finish_check(void);
void set(void);
void pr(void);
int te(int x, int y);
int main(void)
{
int i, j, h=0; //n=세로길이 m=가로길이
scanf(" %d %d", &n, &m);
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
scanf(" %d", &che[i][j]);
}
}
//pr();
while(finish_check()==1)
{
h++;
cnt=0;
te(0, 0);
//pr();
set();
//printf("------------------");
//system("PAUSE");
}
printf("%d\n%d", h, cnt);
return 0;
}
int te(int x, int y){
if(x>=0 && x<=n && y>=0 && y<=m){
if(che[x][y]==0){
che[x][y]=5;
if(che[x+1][y]==1) che[x+1][y]=2;
if(che[x-1][y]==1) che[x-1][y]=2;
if(che[x][y+1]==1) che[x][y+1]=2;
if(che[x][y-1]==1) che[x][y-1]=2;
if(che[x+1][y]==0) te(x+1,y);
if(che[x-1][y]==0) te(x-1,y);
if(che[x][y+1]==0)te(x,y+1);
if(che[x][y-1]==0) te(x,y-1);
}
else
return 0;
}
else
return 0;
}
void pr(void)
{
int i, j;
printf("\n");
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(che[i][j]==0 || che[i][j]==5)
printf(" ");
else
printf("%d ", che[i][j]);
}
printf("\n");
}
printf("\n\n");
}
void set(void)
{
int i, j;
for(i=0; i<n; i++)
{
for(j=0; j<m; j++)
{
if(che[i][j]==5)
che[i][j]=0;
else if(che[i][j]==2)
{
cnt++;
che[i][j]=0;
}
}
}
}
int finish_check(void)
{
int i, j;
for(i=1; i<(n-1); i++)
{
for(j=1; j<(m-1); j++)
{
if(che[i][j]==1)
return 1;
}
}
return 0;
}
2018.05.05 11:55
정올 - 알고리즘 - 치즈(1840)
조회 수 737 추천 수 0 댓글 0