제출 #5226

#제출 시각아이디문제언어결과실행 시간메모리
5226gs13105토마토 (KOI13_tomato)C++98
16 / 16
124 ms5276 KiB
#include <stdio.h>
#include <queue>

#define m(a,b) std::make_pair(a,b)

typedef std::pair<int,int> P;
typedef std::queue<P> Q;

Q q;
int arr[1000][1000];
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};

int main()
{
	int s=0,c=0,p=0,d=0,m,n,nx,ny,i,j;
	scanf("%d%d",&m,&n);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			scanf("%d",&arr[i][j]);
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			if(arr[i][j]==1)
			{
				q.push(m(i,j));
				p++;
			}
			if(arr[i][j]==0)
				s++;
		}
	}
	while(!q.empty())
	{
		for(i=0;i<4;i++)
		{
			nx=q.front().first+dx[i];
			ny=q.front().second+dy[i];
			if(0<=nx&&nx<n&&0<=ny&&ny<m&&arr[nx][ny]==0)
			{
				arr[nx][ny]=1;
				q.push(m(nx,ny));
				c++;
				s--;
			}
		}
		q.pop();
		p--;
		if(p==0)
		{
			if(c!=0)
				d++;
			p=c;
			c=0;
		}
	}
	if(s!=0)
		printf("-1");
	else
		printf("%d",d);
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...