Code: Select all
#include<cstdio>
#include<cstring>
char s[100][100];
int n,c;
bool isvalid(int i,int j)
{
return i>=0 && i<n && j>=0 && j<n;
}
int dx[]={0,0,1,-1,1,-1,-1,1};
int dy[]={1,-1,0,0,1,-1,1,-1};
void floodfill(int i,int j)
{int k;
if(!isvalid(i,j))
return ;
else if(s[i][j]=='0')
return ;
else if(s[i][j]=='1')
{s[i][j]='0';
c++;
for(k=0;k<8;k++)
{
floodfill(i+dx[k],j+dy[k]);} }
}
int main()
{
int i,j,k,m;
int x,t;
char st[10];
scanf("%d",&t);
getchar();gets(st);
for(x=1;x<=t;x++)
{
i=0;
while(gets(st))
{
if(strcmp(st,"")==0)
break;
strcpy(s[i++],st);
}
n=i;
m=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(s[i][j]=='1')
{c=0;
floodfill(i,j);
if(c>m)
m=c;
}
}
}
printf("%d\n",m);
if(x!=t)
puts("");
}
return 0;
}