代码dev测试通过,洛谷RE
Code
#include<bits/stdc++.h>
using namespace std;
bool visit[105][105][1005];
char mp[105][105];
int xx,yy,zz,mn=10005;
void dfs(int x,int y,int step){
if(visit[x][y][step]==1||x>=xx||y>=yy||x<0||y<0||step>1000||mp[x][y]=='x')return;
else visit[x][y][step]=1;
if(mp[x][y]=='E'){
if(step<mn)mn=step;
return;
}
dfs(x+1,y,step+1);
dfs(x,y+1,step+1);
dfs(x-1,y,step+1);
dfs(x,y-1,step+1);
}
int main(){
cin>>xx>>yy>>zz;
for(int i=0;i<xx;i++)for(int j=0;j<yy;j++)cin>>mp[i][j];
if(mp[xx-1][yy-1]=='x'){
cout<<-1;
return 0;
}else mp[xx-1][yy-1]='E';
dfs(0,0,0);
if(mn!=10005){
cout<<mn;
}else cout<<-1;
return 0;
}