poj 3620 Avoid The Lakes

#include<iostream>            //dfs
using namespace std;
bool visited[105][105],rec[105][105];
int n,m,k,s,ans[8]={-1,0,1,0,0,-1,0,1};
void dfs(int r,int c)
{
s
++;visited[r][c]=1;
for(int i=0;i<4;++i)
{
int a=ans[2*i],b=ans[2*i+1];
if(r+a>=1&&r+a<=n&&c+b>=1&&c+b<=m && rec[r+a][c+b]&&!visited[r+a][c+b])
dfs(r
+a,c+b);
}
}
int main()
{
int a,b,res=0;
cin
>>n>>m>>k;
for(int i=0;i<k;++i)
{
cin
>>a>>b;
rec[a][b]
=1;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
if(rec[i][j]&&!visited[i][j])
{
s
=0;
dfs(i,j);
res
=max(res,s);
}
cout
<<res<<endl;
return 0;
}

  

posted on 2011-07-22 20:19  sysu_mjc  阅读(100)  评论(0编辑  收藏  举报

导航