MLE 40 数组开的也不大啊
查看原帖
MLE 40 数组开的也不大啊
553192
Opshacom楼主2024/9/11 21:45
#include<bits/stdc++.h>
using namespace std;
struct th{
    int x,y,z;
};
int dis[35][35][35];
char m[35][35][35];
int dx[6]={0,0,1,-1,0,0};
int dy[6]={1,-1,0,0,0,0};
int dz[6]={0,0,0,0,1,-1};
int n,h,p;
queue<th> q;
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>h>>p;
    int sx,sy,sz;
    for(int i=1;i<=n;i++){
      for(int j=1;j<=h;j++){
        for(int k=1;k<=p;k++){
          cin>>m[i][j][k];
          if(m[i][j][k]=='S'){
            sx=i;
            sy=j;
            sz=k;
          } 
        }
      }
    }
    q.push({sx,sy,sz});
    bool flag=0;
    while(!q.empty()){
      for(int i=0;i<=5;i++){
        int nx,ny,nz;
        th qf=q.front();
        nx=q.front().x+dx[i];
        ny=q.front().y+dy[i];
        nz=q.front().z+dz[i];
        if(nx<1||nx>n) continue;
        if(ny<1||ny>h) continue;
        if(nz<1||nz>p) continue;
        if(m[nx][ny][nz]=='#') continue;
        q.push({nx,ny,nz});
        dis[nx][ny][nz]=dis[qf.x][qf.y][qf.z]+1;
        if(m[nx][ny][nz]=='E'){
          flag=1;
          cout<<"Escaped in "<<dis[nx][ny][nz]<<" minute(s)."<<endl;
          break;
        }
      }
      if(flag) break;
      q.pop();
    }
    if(!flag) cout<<"Trapped!"<<endl;

    return 0;
}
2024/9/11 21:45
加载中...