#include #include using namespace std; int map[700][700]; int vis[700][700]; int ansx,ansy; int ansd,anssum; int n,m; int res=0; int xx[4]={0,-1,1,0}; int yy[4]={1,0,0,-1}; void dfs(int x,int y,int ans,int pre) { if(pre==-1) { int i; for(i=0;i<4;i++) { int nx=x+xx[i]; int ny=y+yy[i]; if(nx<0||nx>=n||ny<0||ny>=m) continue; if(vis[nx][ny]) continue; vis[nx][ny]=1; dfs(nx,ny,ans+1,i); vis[nx][ny]=0; if(res>anssum) { ansx=x; ansy=y; ansd=i; anssum=res; } } return ; } int i; int flag=1; int nx=x+xx[pre]; int ny=y+yy[pre]; if(nx>=0&&nx=0&&ny=n||ny<0||ny>=m) continue; if(vis[nx][ny]) continue; vis[nx][ny]=1; dfs(nx,ny,ans+1,i); vis[nx][ny]=0; flag=0; } } if(flag) { if(res