#include <iostream>
using namespace std;
int dx[6]={1,-1,0,0,0,0}, dy[6]={0,0,1,-1,0,0}, dz[6]={0,0,0,0,1,-1};
bool vis[101][101][101];
int h[100001][11];
char s[101][101][101];
int x, y, z, i2, j2, k2;
bool pan=true;
void bfs(int xx, int yy, int zz)
{
int head=1, tail=1;
vis[xx][yy][zz]=1;
h[1][1]=xx, h[1][2]=yy, h[1][3]=zz, h[1][4]=0;
while(head<=tail)
{
for(int i=0;i<=5;i++)
{
int nx=xx+dx[i], ny=yy+dy[i], nz=zz+dz[i];
if(nx>=0&&nx<x&&ny>=0&&ny<y&&nz>=0&&nz<z&&vis[nz][nx][ny]!=1)
{
vis[nz][nx][ny]=1;
tail++;
h[tail][1]=nx, h[tail][2]=ny, h[tail][3]=nz;
h[tail][4]=h[head][4]+1;
if(nz==i2&&nx==j2&&ny==k2)
{
cout<<"Escaped in "<<h[tail][4]<<" minute(s)."<<endl;
pan=false;
return;
}
}
}
head++;
xx=h[head][1], yy=h[head][2], zz=h[head][3];
}
}
int main()
{
int i1, j1, k1;
while(cin>>z>>x>>y)
{
pan=true;
if(x==0&&y==0&&z==0)
break;
for(int i=0;i<z;i++)
for(int j=0;j<x;j++)
for(int k=0;k<y;k++)
{
cin>>s[i][j][k];
if(s[i][j][k]=='#')
vis[i][j][k]=1;
else
if(s[i][j][k]=='S')
i1=i, j1=j, k1=k;
else if(s[i][j][k]=='E')
i2=i, j2=j, k2=k;
}
bfs(j1,k1,i1);
if(pan==true)
cout<<"Trapped!"<<endl;
}
return 0;
}
萌新初学BFS,大佬帮忙看下哪里有问题