250711
#include <stdio.h>
int arr[1100][1100]= {}, queue[3][10000]= {}, v[1000]= {};
int back=-1, front=-1, n, m, p, q;
void push(int k, int p)
{
if(k<1||k>n||p>m||p<1|| arr[k][p]==1)/**/
{
return;
}
arr[k][p]=1;
back++;
queue[1][back]=k;
queue[2][back]=p;
}
int pop()
{
front++;
return queue[1][front];
}
int pup()
{
return queue[2][front];
}
int main()
{
int i, j, d=0, sum=0;
scanf("%d %d", &n, &m);
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
scanf("%d", &arr[i][j]);
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(arr[i][j]==1)
{
back++;
queue[1][back]=i;
queue[2][back]=j;
//printf("**BFS(%d, %d)**\n", i, j);
}
}
}
//////
while(back!=front)
{
d=0;
for(i=front+1;i<=back;i++)
printf("(%d, %d) ",queue[1][i],queue[2][i]);
printf("\n");
p=pop();
q=pup();
// printf("-BFS(%d, %d)\n", p, q);
push(p+1, q);
push(p, q+1);
push(p-1, q);
push(p, q-1);
sum++;
}
/*만약, 저장될 때부터 모든 토마토가 익어있는 상태이면 0 을 출력해야 하고, 토마토가 모두 익지는 못하는 상황이면 -1 을 출력해야 한다.*/
printf("%d", sum);
return 0;
}




