/*
ID: modengd1
PROG: snail
LANG: C++
*/
#include
#include
#include
using namespace std;
char Map[200][200];
bool vis[200][200];
int N,M;
int dx[4]={1,0,-1,0};
int dy[4]={0,1,0,-1};
int ans;
void DFS(int x,int y,int dir,int step)
{
ans=max(ans,step);
if(x+dx[dir]<0||x+dx[dir]>=N||y+dy[dir]<0||y+dy[dir]>=N||Map[x+dx[dir]][y+dy[dir]]==‘#‘)
{
int d=(dir+1)%4;
if(!(x+dx[d]<0||x+dx[d]>=N||y+dy[d]<0||y+dy[d]>=N||Map[x+dx[d]][y+dy[d]]==‘#‘||vis[x+dx[d]][y+dy[d]]))
{
vis[x+dx[d]][y+dy[d]]=true;
DFS(x+dx[d],y+dy[d],d,step+1);
vis[x+dx[d]][y+dy[d]]=false;
}
d=(4+dir-1)%4;
if(!(x+dx[d]<0||x+dx[d]>=N||y+dy[d]<0||y+dy[d]>=N||Map[x+dx[d]][y+dy[d]]==‘#‘||vis[x+dx[d]][y+dy[d]]))
{
vis[x+dx[d]][y+dy[d]]=true;
DFS(x+dx[d],y+dy[d],d,step+1);
vis[x+dx[d]][y+dy[d]]=false;
}
}
else if(!vis[x+dx[dir]][y+dy[dir]])
{
vis[x+dx[dir]][y+dy[dir]]=true;
DFS(x+dx[dir],y+dy[dir],dir,step+1);
vis[x+dx[dir]][y+dy[dir]]=false;
}
}
int main()
{
freopen("snail.in","r",stdin);
freopen("snail.out","w",stdout);
char y;
int x;
memset(vis,false,sizeof(vis));
scanf("%d%d",&N,&M);
getchar();
for(int i=0;i
usaco Snail Trails