找最大的一片湖的面积,4便有1边相连算相连,4角不算。
runtime error 有一种可能是 数组开的太小,越界了
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
using namespace std;
#define MAXN 110
int map[MAXN][MAXN];
int n,m,sum,a[MAXN*MAXN],b[MAXN*MAXN];//runtime error 原来是这里小了
int xx[]={,,,-};
int yy[]={,-,,};
struct tt
{
int x,y;
}; int bfs()
{
int ans,maxx=;
tt front,rear,temp;
queue<tt>q;
while(!q.empty())
q.pop();
for(int i=;i<sum;i++)
{
if(map[a[i]][b[i]]==)
{
front.x=a[i];front.y=b[i];
q.push(front);
map[a[i]][b[i]]=;
ans=;
while(!q.empty())
{
temp=q.front();
q.pop();
for(int j=;j<;j++)
{
rear.x=temp.x+xx[j];
rear.y=temp.y+yy[j];
if(rear.x>&&rear.y>&&rear.x<=n&&rear.y<=m&&map[rear.x][rear.y]==)
{
q.push(rear);
map[rear.x][rear.y]=;
ans++;
maxx=maxx>ans? maxx:ans;
}
}
}
}
}
return maxx;
} int main()
{
int i;
while(scanf("%d%d%d",&n,&m,&sum)!=EOF)
{
memset(map,,sizeof(map));
for(i=;i<sum;i++)
{
scanf("%d%d",&a[i],&b[i]);
map[a[i]][b[i]]=;
}
printf("%d\n",bfs());
} return ;
}