比赛 搜索题... 评测结果 AAAAAAAAAA
题目名称 最大的湖 最终得分 100
用户昵称 lcomyn 运行时间 0.006 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2014-11-04 18:38:25
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int f[101][101],n,m,k,ans;
int dx[5]={0,1,0,-1,0},dy[5]={0,0,1,0,-1};
void dfs(int i,int j)
{
	int k;
	ans++;
	f[i][j]=0;
	for (k=1;k<=4;++k)
	  if ((i+dx[k]>=1)&&(i+dx[k]<=n)&&(j+dy[k]>=1)&&(j+dy[k]<=m)&&(f[i+dx[k]][j+dy[k]]==1))
	    dfs(i+dx[k],j+dy[k]);
}
int main()
{
	int i,x,j,y,sum;
	freopen("lake.in","r",stdin);
	freopen("lake.out","w",stdout);
	memset(f,0,sizeof(f));
	scanf("%d%d%d",&n,&m,&k);
	for (i=1;i<=k;++i)
	  {
	  	scanf("%d%d",&x,&y);
	    f[x][y]=1;
	  } 
	sum=0;
	for (i=1;i<=n;++i)
	  for (j=1;j<=m;++j)
	    {
	      ans=0;
	      if (f[i][j]==1)
	        {
	          dfs(i,j);
	          sum=max(sum,ans);
	        }
	    }
	cout<<sum<<endl;
	fclose(stdin);
	fclose(stdout);
}