871 - Counting Cells in a Blob

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char str[30][30];
int count1,k;
int arr[1000];
void dfs(int i,int j)
{
    if(i<0||j<0||i>=count1||j>=count1)
    {
        return;
    }
    if(str[i][j]=='0')
    {
        return;
    }
    if(str[i][j]=='1')
    {
        k++;
    }
    str[i][j]='0';
    dfs(i+1,j);
    dfs(i+1,j+1);
    dfs(i,j+1);
    dfs(i-1,j+1);
    dfs(i-1,j);
    dfs(i-1,j-1);
    dfs(i,j-1);
    dfs(i+1,j-1);
}
int main()
{
    int i,j,m,t,x;
    scanf("%d",&t);
    getchar();
    for(x=1; x<=t; x++)
    {
        getchar();
        if(x!=1)
        {
            printf("\n");
        }
        count1=0;
        i=0;
        for(j=0;; j++)
        {
            scanf("%c",&str[i][j]);
            if(str[i][j]=='\n')
            {
                break;
            }
            count1++;
        }
        for(i=1; i<count1; i++)
        {
            for(j=0; j<count1; j++)
            {
                scanf("%c",&str[i][j]);
            }
            getchar();
        }
        m=0;
        for(i=0; i<count1; i++)
        {
            for(j=0; j<count1; j++)
            {
                if(str[i][j]=='1')
                {
                    k=0;
                    dfs(i,j);
                    arr[m++]=k;
                }
            }
        }
        sort(arr,arr+m);
        printf("%d\n",arr[m-1]);
        memset(str,'\0',sizeof(str));
        memset(arr,0,sizeof(arr));
    }
    return 0;
}

0 comments: (+add yours?)