11094 - Continents

#include<bits/stdc++.h>
using namespace std;

char mat[23][23],continent;
int row,column,counter;

void dfs(int u,int v)
{
    if(v<0)
    {
        v=column-1;
    }
    else if(v>=column)
    {
        v=0;
    }
    if(u<0 || u>=row)
    {
        return;
    }
    if(mat[u][v]!=continent || mat[u][v]=='x')
    {
        return;
    }
    mat[u][v]='x';
    counter++;
    dfs(u,v+1);
    dfs(u,v-1);
    dfs(u+1,v);
    dfs(u-1,v);
}

int main()
{
    int x,y,i,j,maximum;
    while(scanf("%d%d",&row,&column)==2)
    {
        getchar();
        for(i=0; i<row; i++)
        {
            for(j=0; j<column; j++)
            {
                scanf("%c",&mat[i][j]);
            }
            getchar();
        }

        scanf("%d%d",&x,&y);

        continent=mat[x][y];
        counter=0;

        dfs(x,y);

        maximum=0;
        for(i=0; i<row; i++)
        {
            for(j=0; j<column; j++)
            {
                if(mat[i][j]==continent)
                {
                    counter=0;
                    dfs(i,j);
                    if(maximum<counter)
                    {
                        maximum=counter;
                    }
                }
            }
        }
        printf("%d\n",maximum);
        memset(mat,'\0',sizeof(mat));
    }
    return 0;
}

0 comments: (+add yours?)