Advertisement
yeskendir_sultanov

acmp - 99

Jun 11th, 2025
1,112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.58 KB | Source Code | 0 0
  1. #include <bits/stdc++.h>
  2. #define lvl first
  3. #define row second.first
  4. #define col second.second
  5.  
  6. using namespace std;
  7.  
  8. int h, n, m, d[51][51][51];
  9. char table[51][51][51];
  10. pair<int, pair<int, int>> s, f;
  11. pair<int, pair<int, int>> dir[5] = {{0, {-1, 0}}, {0, {0, +1}}, {0, {+1, 0}}, {0, {0, -1}}, {+1, {0, 0}}};
  12. bool used[51][51][51];
  13. queue<pair<int, pair<int, int>>> q;
  14.  
  15. bool check(int lv, int r, int c) {
  16.     return (1 <= lv && lv <= h && 1 <= r && r <= n && 1 <= c && c <= m && table[lv][r][c] != 'o');
  17. }
  18.  
  19. int main() {
  20.     cin >> h >> n >> m;
  21.     for (int k = 1; k <= h; ++k) {
  22.         for (int i = 1; i <= n; ++i) {
  23.             for (int j = 1; j <= m; ++j) {
  24.                 cin >> table[k][i][j];
  25.                 if (table[k][i][j] == '1') {
  26.                     s = {k, {i, j}};
  27.                     d[k][i][j] = 0;
  28.                     used[k][i][j] = true;
  29.                     q.push({k, {i, j}});
  30.                 } else if (table[k][i][j] == '2') {
  31.                     f = {k, {i, j}};
  32.                 }
  33.             }
  34.         }
  35.     }
  36.    
  37.     while (!q.empty()) {
  38.         auto v = q.front();
  39.         q.pop();
  40.         for (int i = 0; i < 5; ++i) {
  41.             int k = v.lvl + dir[i].lvl;
  42.             int x = v.row + dir[i].row;
  43.             int y = v.col + dir[i].col;
  44.            
  45.             if (check(k, x, y) && !used[k][x][y]) {
  46.                 used[k][x][y] = true;
  47.                 d[k][x][y] = d[v.lvl][v.row][v.col] + 1;
  48.                 q.push({k, {x, y}});
  49.             }
  50.         }
  51.     }
  52.    
  53.     cout << d[f.lvl][f.row][f.col] * 5;
  54.     return 0;
  55. }  
  56.  
  57.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement