#include<iostream> using namespace std; int n,m,k,a,b,t,ans; bool use[101][101],map[101][101]; int pos[4][2]={{1,0},{0,1},{0,-1},{-1,0}}; bool In(int x,int y)//判断x,y是否在矩形范围内 { return x>=1&&x<=n&&y>=1&&y<=m; } void res(int x,int y)//搜索到当前的位置 { int i; use[x][y]=1;t++;//标记并将总的个数加1 for(i=0;i<4;i++)//搜索相邻的四个位置 { a=pos[i][0]+x; b=pos[i][1]+y; if(In(a,b)&&!use[a][b]&&map[a][b]) res(a,b); } } void sea()//找出未搜索过的块,进行搜索标记
{ int i,j; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(!use[i][j]&&map[i][j])//从一个点搜索出包含该点的块 { t=0;res(i,j); if(ans<t)ans=t; } } int main() { int i,j; while(cin>>n>>m>>k) { for(i=1;i<=n;i++) for(j=1;j<=m;j++) map[i][j]=use[i][j]=0; for(i=1;i<=k;i++) { cin>>a>>b; map[a][b]=1; } ans=0;sea(); cout<<ans<<endl; } return 0; }
|