比赛 20120810 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 TBK 运行时间 0.010 s
代码语言 C++ 内存使用 0.48 MiB
提交时间 2012-08-10 09:23:32
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int a,b,c,d,l,m,n,k[4][2]={{-1,0},{1,0},{0,-1},{0,1}},p[20000][2],q,h,t,s,r;
bool bo[101][101],boo[101][101];
int main(void)
{
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	scanf("%d%d%d",&a,&b,&c);
	for (d=0;d<c;d++)
	{
		scanf("%d%d",&l,&m);
		bo[l][m]=true;
	}
	for (d=1;d<=a;d++)
		for (l=1;l<=b;l++)
		{
			if ((bo[d][l]==true)&&(boo[d][l]==0))
			{
				h=0;
				t=0;
				p[h][0]=d;
				p[h][1]=l;
				h++;
				boo[d][l]=true;
				while (h>t)
				{
					for (q=0;q<4;q++)
					{
						m=p[t][0]+k[q][0];
						n=p[t][1]+k[q][1];
						if ((m>0)&&(m<=a)&&(n>0)&&(n<=b))
						{
							if ((bo[m][n]==true)&&(boo[m][n]==false)) 
							{
								boo[m][n]=true;
								p[h][0]=m;
								p[h][1]=n;
								h++;
							}
						}
					}
					t++;
				}
				if (h>s) s=h;
			}				
		}
	printf("%d",s);
	fclose(stdin);
	fclose(stdout);
	return 0;
}