比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 return 0; 运行时间 0.500 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-11-04 19:16:14
显示代码纯文本
#include<fstream>
#include<deque>
#include<cstring>
using namespace std;
ifstream fin("lake.in");
ofstream fout("lake.out");
int a[101][101];
bool c[101][101];
int n,m,b;
int counter=0,ans=0;
class woca
{
public:
	int x;
	int y;
	int z;
};
deque<woca>q;
int BFS()
{
	woca f;
	woca k;
	int sum=1;
	while(q.size()!=0)
	{
		f=q.at(0);
		q.pop_front();
		if(a[f.x+1][f.y]==1&&c[f.x+1][f.y]==0)
		{
			k.x=f.x+1;
			k.y=f.y;
			k.z=f.z+1;
			sum++;
			c[f.x+1][f.y]=1;
			q.push_back(k);
		}
		if(a[f.x-1][f.y]==1&&c[f.x-1][f.y]==0)
		{
			k.x=f.x-1;
			k.y=f.y;
			k.z=f.z+1;
			c[f.x-1][f.y]=1;
			sum++;
			q.push_back(k);
		}
		if(a[f.x][f.y+1]==1&&c[f.x][f.y+1]==0)
		{
			k.x=f.x;
			k.y=f.y+1;
			k.z=f.z+1;
			c[f.x][f.y+1]=1;
			sum++;
			q.push_back(k);
		}
		if(a[f.x][f.y-1]==1&&c[f.x][f.y-1]==0)
		{
			k.x=f.x;
			k.y=f.y-1;
			k.z=f.z+1;
			c[f.x][f.y-1]=1;
			sum++;
			q.push_back(k);
		}
	}
	return sum;
}
int main()
{
	fin>>n>>m>>b;
	int i,A,B,j;
	woca flag;
	for(i=1;i<=b;i++)
	{
		fin>>A>>B;
		a[A][B]=1;
	}
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			if(a[i][j]==1)
			{
				flag.x=i;
			    flag.y=j;
			    flag.z=1;
			    q.push_back(flag);
				c[i][j]=1;
			    counter=BFS();
			    if(counter>ans)
				ans=counter;
			    memset(c,0,sizeof(c));
			}
		}
	fout<<ans<<endl;
}