请问OpenJudge2.5的2753为什么wa了
#include<bits/stdc++.h>
using namespace std;
int zx,zy;
map<int,map<int,bool> >map1;//map1[x][y]
map<int,map<int,bool> >map2;//1走过
int bs=1600;
void dfs(int lbs,int x,int y){
map2[x][y]=1;
if((x==zx)&&(y==zy)){bs=lbs;return;}
if(lbs>=bs)return;
if((map1[x+1][y])&&(!map2[x+1][y])){dfs(lbs+1,x+1,y);}
else if((map1[x-1][y])&&(!map2[x-1][y])){dfs(lbs+1,x-1,y);}
else if((map1[x][y+1])&&(!map2[x][y+1])){dfs(lbs+1,x,y+1);}
else if((map1[x][y-1])&&(!map2[x][y-1])){dfs(lbs+1,x,y-1);}
map2[x][y]=0;
}
int main(){
char c;
cin>>zx>>zy;
for(int i=1;i<=zy;i++){
for(int j=1;j<=zx;j++){
cin>>c;
map1[j][i]=(c=='.')?1:0;//1可走
}}
dfs(0,1,1);
cout<<bs;
return 0;
}