0
点赞
收藏
分享

微信扫一扫

javaEE基于springboot+ssm校园快递代领系统mb6il

爱动漫建模 2024-03-09 阅读 8
#include<iostream>
#include<cstring>
using namespace std;
const int N = 110;
int l,r,c;
char g[N][N][N];
struct addr{
    int a,b,c;
};
addr q[N*N*N];
int dist[N][N][N];
int da[6] = {1, -1, 0, 0, 0, 0},db[6]={0, 0, 1, -1, 0, 0},dc[6]={0, 0, 0, 0, 1, -1};
int bfs(addr start,addr end){
    int hh=0,tt=-1;
    q[++tt]=start;
    memset(dist,-1,sizeof dist);
    dist[start.a][start.b][start.c] = 0;
    while(hh<=tt){
        addr t = q[hh++];
        for(int i=0;i<6;i++){
            int z = t.a + da[i],x = t.b+db[i],y=t.c+dc[i];
            if(z<0 || z>=l || x<0 || x>=r || y<0 || y>=c || g[z][x][y] == '#' || dist[z][x][y]!=-1) continue;
            dist[z][x][y] = dist[t.a][t.b][t.c]+1;
            if(z==end.a && x == end.b && y == end.c) return dist[z][x][y];
            q[++tt] = {z,x,y};
        }
    }
    return -1;
}


int main(){
    while(cin>>l>>r>>c, l||r||c){
        addr start,end;
        for (int i = 0; i < l; i ++ )
            for (int j = 0; j < r; j ++ )
            {
                scanf("%s", g[i][j]);
                for (int k = 0; k < c; k ++ )
                {
                    char ch = g[i][j][k];
                    if (ch == 'S') start = {i, j, k};
                    else if (ch == 'E') end = {i, j, k};
                }
            }
        int distance = bfs(start,end);
        if(distance==-1) printf("Trapped!\n");
        else printf("Escaped in %d minute(s).\n",distance);
    }
}
举报

相关推荐

0 条评论