//很水的dfs
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn=100+10;
int mx[maxn][maxn],m,n,k,cnt;
int dir[4][2]= {{-1,0},{0,-1},{1,0},{0,1}}; //四个方向
int dfs(int x,int y)
{
int dx,dy;
mx[x][y]=0;cnt++;
for(int i=0; i<4; i++) //消除标记
{
dx=x+dir[i][0];
dy=y+dir[i][1];
if(dx>0 && dy>0 && dx<=m && dy<=n && mx[dx][dy]==1)
{
//printf("%d^^^^\n",cnt);
dfs(dx,dy);
}
}
return cnt;
}
int main()
{
while(~scanf("%d%d%d",&m,&n,&k))
{
memset(mx,-1,sizeof(mx));
for(int i=0; i<k; i++)
{
int a,b;
scanf("%d%d",&a,&b);
mx[a][b]=1; //标记目标点
}
int mm=1;
for(int i=1; i<=m; i++)
for(int j=1; j<=n; j++)
{
if(mx[i][j]==1) //已标记的点
{
cnt=0;
dfs(i,j);
if(cnt>mm)
mm=cnt; //更新最大值
}
}
printf("%d\n",mm);
}
return 0;
}
POJ 3620 Avoid The Lakes
最新推荐文章于 2020-05-04 19:20:05 发布