比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 Steve 运行时间 0.019 s
代码语言 C++ 内存使用 0.40 MiB
提交时间 2014-11-04 19:57:00
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int n,m,Next[4][2]={{1,0},{-1,0},{0,1},{0,-1}},u,v;
bool a[110][110];
struct qq{
	int x,y;
}que[10050];
bool find()
{
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(a[i][j]==1)
			{
				u=i;
				v=j;
				return 1;
			}
		}
	}
	return 0;
}
int main()
{
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	memset(a,0,sizeof(a));
	int k,i,j,b,c,head=1,tail=1,cnt,Max=-1,tx,ty;
	bool flag=0;
	cin>>n>>m>>k;
	for(i=1;i<=k;i++)
	{
		cin>>b>>c;
		a[b][c]=1;
	}
	while(find())
	{
		que[tail].x=u;
		que[tail].y=v;
		a[u][v]=0;
		tail++;
		cnt=1;
		while(head<tail)
		{
			if(cnt>Max)
				Max=cnt;
			for(i=0;i<=3;i++)
			{ 
				tx=que[head].x+Next[i][0];
				ty=que[head].y+Next[i][1];
				if(tx<1 || tx>n || ty<1 || ty>m)
					continue;
				if(a[tx][ty]==1)
				{
					a[tx][ty]=0;
					que[tail].x=tx;
					que[tail].y=ty;
					cnt++;
					tail++;
				}
			}
			head++;
		}
	}
	cout<<Max<<endl;
	return 0;
}