之过了三个点,看了半天没改出来
#include<bits/stdc++.h>
using namespace std;
int l,r,c,ans[901][31],x1,y11,x2,y2;
char mp[901][31];
bool vis[901][31];
int dx[6]={1,-1,0,0,0,0};
int dy[6]={0,0,1,-1,0,0};
queue<int>qx,qy;
int main(){
cin>>l>>r>>c;
dx[4]=r;
dx[5]=-r;
for(int i=1;i<=l*r;++i){
for(int j=1;j<=c;++j){
cin>>mp[i][j];
if(mp[i][j]=='S'){
x1=i;y11=j;
}
if(mp[i][j]=='E'){
x2=i;y2=j;
}
}
}
qx.push(x1);
qy.push(y11);
vis[x1][y11]=true;
while(!qx.empty()){
for(int i=0;i<6;++i){
int nx=qx.front()+dx[i];
int ny=qy.front()+dy[i];
if((qx.front()%r==0&&dx[i]==1)||((qx.front()-1)%r==0&&dx[i]==-1)) continue;
if(nx>0&&nx<=l*r&&ny>0&&ny<=c&&(mp[nx][ny]=='.'||mp[nx][ny]=='E')&&!vis[nx][ny]){
vis[nx][ny]=true;
ans[nx][ny]=ans[qx.front()][qy.front()]+1;
qx.push(nx);
qy.push(ny);
}
}
qx.pop();
qy.pop();
}
if(ans[x2][y2]!=0) printf("Escaped in %d minute(s).",ans[x2][y2]);
else cout<<"Trapped!";
return 0;
}