1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#include <stdio.h>
#define V(x,y) ((((x) >= 0 && (x) < r) && ((y) >= 0 && (y) < c)) ? 1 : 0)
int A[100][100],curr,r,c;
void visit(int i, int j) {
++curr;
A[i][j] = 0;
/*if(V(i-1,j-1) && A[i-1][j-1])
visit(i-1,j-1);*/
if(V(i-1,j) && A[i-1][j])
visit(i-1,j);
/* if(V(i-1,j+1) && A[i-1][j+1])
visit(i-1,j+1);*/
if(V(i,j-1) && A[i][j-1])
visit(i,j-1);
if(V(i,j+1) && A[i][j+1])
visit(i,j+1);
/* if(V(i+1,j-1) && A[i+1][j-1])
visit(i+1,j-1);*/
if(V(i+1,j) && A[i+1][j])
visit(i+1,j);
/* if(V(i+1,j+1) && A[i+1][j+1])
visit(i+1,j+1);*/
}
int main() {
int i,j,max = 0;
scanf("%d\n%d",&r,&c);
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
{ scanf("%d",&A[i][j]);
if(A[i][j]==1||A[i][j]==2)
A[i][j]=1;
else
A[i][j]=0;
}
for(i = 0; i < r; ++i)
for(j = 0; j < c; ++j)
if(A[i][j] == 1) {
curr = 0;
visit(i,j);
if(curr > max)
max = curr;
}
printf("%d",max);
return 0;
}
|