Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- //{
- //#pragma gcc optimize("Ofast,unroll-loops")
- //#pragma gcc target("sse,sse2,sse3,ssse3,sse4,avx,avx2,fma,abm,mmx,popcnt,tune=native")
- //#define int long long
- //#define double long double
- #define MP make_pair
- #define F first
- #define S second
- #define MOD 1000000007
- //}
- signed main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- int L, R, C;
- while (true)
- {
- cin >> L >> R >> C;
- if (L == 0 && R == 0 && C == 0)
- break;
- bool g[32][32][32] = {};
- vector<int> S, E;
- for (int i = 0; i < L; i++)
- for (int j = 0; j < R; j++)
- {
- string s;
- cin >> s;
- for (int k = 0; k < C; k++)
- if (s[k] != '#')
- {
- g[i + 1][j + 1][k + 1] = true;
- if (s[k] == 'S')
- S = {i + 1, j + 1, k + 1};
- if (s[k] == 'E')
- E = {i + 1, j + 1, k + 1};
- }
- }
- bool vis[32][32][32] = {};
- int dx[] = {-1, 1, 0, 0, 0, 0}, dy[] = {0, 0, -1, 1, 0, 0}, dz[] = {0, 0, 0, 0, -1, 1};
- /// dx dy dz
- /// 0 -1 0 0
- /// 1 1 0 0
- /// 2 0 -1 0
- /// 3 0 1 0
- /// 4 0 0 -1
- /// 5 0 0 1
- int dis[32][32][32] = {};
- queue<pair<vector<int>, int>> q;
- q.push(MP(S, 0)), vis[S[0]][S[1]][S[2]] = true;
- while (!q.empty())
- {
- int x = q.front().first[0], y = q.front().first[1], z = q.front().first[2], d = q.front().second;
- q.pop();
- for (int i = 0; i < 6; i++)
- {
- int nx = x + dx[i], ny = y + dy[i], nz = z + dz[i];
- vector<int> np = {nx, ny, nz};
- if (!vis[nx][ny][nz] && g[nx][ny][nz])
- vis[nx][ny][nz] = true, dis[nx][ny][nz] = d + 1, q.push(MP(np, d + 1));
- }
- }
- if (!vis[E[0]][E[1]][E[2]])
- cout << "Trapped!\n";
- else
- cout << "Escaped in " << dis[E[0]][E[1]][E[2]] << " minute(s).\n";
- }
- return 0;
- }
- // ***** ***** * * * ***** * * ***** *****
- // * * * * * * * ** * * * *
- // * * * ***** * * * * * * *****
- // * * * * * * * * ** * *
- // **** ***** * ***** ***** * * * *
- // * * *** * * **
- // * * * * * * **
- // * * * ***** ***** **
- // * * * * * * *
- // * * * * * * **
Advertisement
Add Comment
Please, Sign In to add comment