poj 2251

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<stack>
#define ll long long
#define N 200000
#include<math.h>
#include<queue>
using namespace std;
int a,b,c;
int vis[30][30][30];
int linshi;
char cc;///    用于输入字符
int s_i,s_j,s_k;///  start 坐标
int e_i,e_j,e_k;///   终点点坐标
struct node{///   在这里最初结构体里还有个  int step    后来怎么都mle 就改成3个了
int i,j,k;
};
node start;
node now,next;///  在bfs循环中  中的前后两个
int chengong;///     在循环中若为1 就跳出来   每次开始时刷新为0
queue<node>que;
int dir[6][3]={-1,0,0,1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1};
int main(){
//freopen("input2.txt","r",stdin);
while(scanf("%d%d%d",&a,&b,&c)&&a!=0&&b!=0&&c!=0){
        while(!que.empty())que.pop();
        chengong=0;
    for(int i=0;i<a;i++){
        for(int j=0;j<b;j++){
            for(int k=0;k<c;k++){
          cin>>cc;
          if(cc=='#')vis[i][j][k]=true;
          else vis[i][j][k]=false;
            if(cc=='S'){
                start.i=i;
                start.j=j;
                start.k=k;
            }
            else if(cc=='E'){
                e_i=i;
                e_j=j;
                e_k=k;
            }

          }
        }
    }
    vis[start.i][start.j][start.k]=1;
   que.push(start);
   while(!que.empty()){
    now=que.front();
    que.pop();
     int now_i=now.i;
     int now_j=now.j;
     int now_k=now.k;
    int step_next=vis[now_i][now_j][now_k]+1;
      for(int i=0;i<6;i++){
        next.i=now_i+dir[i][0];
        next.j=now_j+dir[i][1];
        next.k=now_k+dir[i][2];
        if(next.i<0||next.j<0||next.k<0||next.i==a||next.j==b||next.k==c)continue;///   先判断是否出界
         if(vis[next.i][next.j][next.k])continue;///   再判断是否拜访
         vis[next.i][next.j][next.k]=step_next;
         if(next.i==e_i&&next.j==e_j&&next.k==e_k){
            printf("Escaped in %d minute(s).\n",vis[next.i][next.j][next.k]-1);
              chengong=1;
         }
         if(chengong)break;
        que.push(next);
      }
   if(chengong)break;
   }
   if(!chengong){
    cout<<"Trapped!\n";
   }
}
}

猜你喜欢

转载自blog.csdn.net/qq_40675883/article/details/82751453