#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;
}
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?)
Post a Comment