http://ybt.ssoier.cn:8088/problem_show.php?pid=1248
#include<bits/stdc++.h>
using namespace std;
const int dx[6]={1,0,-1,0,0,0};
const int dy[6]={0,1,0,-1,0,0};
const int dz[6]={0,0,0,0,1,-1};
char c[30][30][30];
bool vis[51][51][51];
struct node{
int x,y,z,t;
};
int sx,sy,sz,ex,ey,ez;
int n,m,hh;
void bfs(int sx,int sy,int sz)
{
queue <node> q;
node h,t;
t={sx,sy,sz,0};
q.push(t);
vis[sx][sy][sz]=true;
while(!q.empty())
{
h=q.front();
q.pop();
for(int i=0;i<=5;i++)
{
int nx=h.x+dx[i];
int ny=h.y+dy[i];
int nz=h.z+dz[i];
int nt=h.t+1;
if(nx==ex && ny==ey && nz==ez)
{
cout<<"Escaped in "<<nt<<" minute(s)."<<endl;
return;
}
if(nx>=0 && nx<=n-1 && ny>=0 && ny<=m-1 && nz>=0 && nz<=hh-1 && !vis[nz][ny][nz] && c[nx][ny][nz]=='.')
{
//cout<<nx<<" "<<ny<<" "<<nz<<" "<<nt<<endl;
t={nx,ny,nz,nt};
q.push(t);
vis[nx][ny][nz]=true;
}
}
}
cout<<"Trapped!"<<endl;
}
int main()
{
while(1)
{
cin>>hh>>n>>m;
if(n==0 && m==0 && hh==0)
break;
for(int i=0;i<=hh-1;i++)
for(int j=0;j<=n-1;j++)
{
cin>>c[i][j];
for(int k=0;k<=m-1;k++)
{
if(c[i][j][k]=='S')
{
sx=j;
sy=k;
sz=i;
}
if(c[i][j][k]=='E')
{
ex=j;
ey=k;
ez=i;
}
}
}
// cout<<sx<<" "<<sy<< "<<sz<<" "<<ex<<" "<<ey<<" "<<ez;
memset(vis,false,sizeof(vis));
bfs(sx,sy,sz);
}
return 0;
}
快疯了(