记录编号 137701 评测结果 AAAAAAAAAA
题目名称 [USACO Nov07] 最大的湖 最终得分 100
用户昵称 Gravatar 是否通过 通过
代码语言 C++ 运行时间 0.005 s
提交时间 2014-11-05 06:59:47 内存使用 0.33 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
bool flag[101][101];
bool map[101][101];
queue<int >qx;
queue<int >qy;
int n,m,k,wo,ni;
int dx[4]={-1,1,0,0},
	dy[4]={0,0,-1,1};
	int sum;
inline int  sou()
{
	int x,y;
	while(!qx.empty())
	{
		x=qx.front();y=qy.front();
		for(int i=0;i<=3;i++)
		{
			wo=x+dx[i];ni=y+dy[i];
		
			if(wo>0&&wo<=n&&ni>0&&ni<=m)
			{	
				if(map[wo][ni]&&!flag[wo][ni])
				{
					flag[wo][ni]=1;
					qx.push(wo);
					qy.push(ni);
					sum++;
				}
			}
		}
		qx.pop();
		qy.pop();
	}
	return sum;
}
int main()
{
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	scanf("%d%d%d",&n,&m,&k);
	int x,y;
	for(int i=1;i<=k;i++)
	{
		scanf("%d%d",&x,&y);
		map[x][y]=1;
	}
	int maxx=-100000000,ta;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			if(map[i][j]&&!flag[i][j])
			{
				flag[i][j]=1;
				qx.push(i);
				qy.push(j);
				sum=1;
				ta=sou();
				if(ta>maxx)maxx=ta;
			}
		}
	}
	printf("%d",maxx);
	return 0;
}