• B


     1 //纯bfs
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <cstdio>
     6 #include <queue>
     7 
     8 using namespace std;
     9 const int maxn = 33;
    10 char g[maxn][maxn][maxn];
    11 bool vis[maxn][maxn][maxn];
    12 int f[6][3] = { { 1, 0, 0 }, { -1, 0, 0 }, { 0, 1, 0 }, { 0, -1, 0 }, { 0, 0, 1 }, { 0, 0, -1 } };
    13 int L, R, C;
    14 struct node{
    15     int x, y, z;
    16     int flag;
    17 }last, now;
    18 
    19 void bfs(int x1, int y1, int z1){
    20     vis[z1][x1][y1] = true;
    21     queue<node>q;
    22     while (!q.empty()){
    23         q.pop();
    24     }
    25     last.x = x1; last.y = y1; last.z = z1;
    26     last.flag = 0;
    27     q.push(last);
    28     while (!q.empty()){
    29         last = q.front();
    30         q.pop();
    31         if (g[last.z][last.x][last.y] == 'E'){
    32             cout << "Escaped in " << last.flag << " minute(s)." << endl;
    33             return;
    34         }
    35         for (int i = 0; i < 6; i++){
    36             now.z = last.z + f[i][0];
    37             now.x = last.x + f[i][1];
    38             now.y = last.y + f[i][2];
    39             now.flag = last.flag + 1;
    40             if (now.z < 0 || now.z >= L || now.x < 0 || now.y < 0 || now.x >= R || now.y >= C)
    41                 continue;
    42             if (!vis[now.z][now.x][now.y] && g[now.z][now.x][now.y] != '#'){
    43                 vis[now.z][now.x][now.y] = true;
    44                 q.push(now);
    45             }
    46         }
    47     }
    48     cout << "Trapped!" << endl;
    49 }
    50 
    51 int main(){
    52     ios::sync_with_stdio(false);
    53     while (cin>>L>>R>>C){
    54         if (!L && !R && !C)
    55             break;
    56         int x, y, z;
    57         memset(vis, false, sizeof(vis));
    58         for (int i = 0; i < L; i++){
    59             for (int j = 0; j < R; j++){
    60                 for (int k = 0; k < C; k++){
    61                     char s;
    62                     cin >> s;
    63                     g[i][j][k] = s;
    64                     if (s == 'S'){
    65                         z = i; x = j; y = k;
    66                     }
    67                 }
    68             }
    69         }
    70         bfs(x, y, z);
    71         
    72     }
    73     return 0;
    74 }
  • 相关阅读:
    存储器管理
    进程与线程
    进程间通信 IPC(Inter-Process Communication)
    进程的同步与互斥
    【bzoj4806~bzoj4808】炮车马后——象棋四连击
    【bzoj1013】[JSOI2008]球形空间产生器sphere
    【bzoj5427】最长上升子序列(贪心+LIS)
    NOIP2018没有什么新闻
    【bzoj3170】[Tjoi2013]松鼠聚会(数学题)
    【bzoj5170】Fable(树状数组)
  • 原文地址:https://www.cnblogs.com/ouyang_wsgwz/p/8719002.html
Copyright © 2020-2023  润新知