40分代码在线求找错

 

P1248链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1248

代码:

#include<bits/stdc++.h>
using namespace std;
int cs, a, b, stx, sty, stz, edx, edy, edz;
char mp[45][45][45];
struct node{
    int x, y, z, step;
};
int fx, fy, fz, fstep;
bool f;
node que[2500];
int front, rear;
int dir[6][3]={{-1,0,0},{1,0,0},{0,1,0},{0,-1,0},{0,0,1},{0,0,-1}};
void bfs()
{
    front=rear=1;
    que[rear].x=stx;  que[rear].y=sty,que[rear].z=stz; 
    que[rear].step=0;
    mp[stx][sty][stz]='#';
    while(front<=rear){
        fx=que[front].x; fy=que[front].y; fz=que[front].z; fstep=que[front].step; 
        if(fx==edx && fy==edy && fz==edz){
            cout<<"Escaped in "<<fstep<<" minute(s)."<<endl;
            f=1;
            break;
        }
        for(int i=0; i<6; i++){
            int nx=fx+dir[i][0];
            int ny=fy+dir[i][1];
            int nz=fz+dir[i][2];
            if(nx>=0 && nx<cs && ny>=0 && ny<a && nz>=0 && ny<b && mp[nx][ny][nz]=='.'){
                mp[nx][ny][nz]='#';
                rear++;                        
                que[rear].x=nx;                
                que[rear].y=ny;   
                que[rear].z=nz;             
                que[rear].step=fstep+1;        
            }
        }
        front++;                           
    }
}
int main()
{
    while(1){
        f=0;
        cin>>cs>>a>>b;
        if(cs==0 && a==0 && b==0) break;
        for(int i=0; i<cs; i++){
            for(int j=0;j<a;j++) cin>>mp[i][j];
        }
        for(int i=0;i<cs;i++){
            for(int j=0;j<a;j++){
                for(int k=0;k<b;k++){
                    if(mp[i][j][k]=='S'){
                        stx=i,sty=j,stz=k;
                    }
                    if(mp[i][j][k]=='E'){
                        edx=i,edy=j,edz=k;
                        mp[i][j][k]='.';
                    }
                }
            }
        }
        bfs();
        if(f==0) 
            cout<<"Trapped!"<<endl;
    }
    return 0;
 }
原文地址:https://www.cnblogs.com/Wag-Ho/p/13777064.html