Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 33;
  5. struct T {
  6. int x, y, z;
  7. };
  8. char a[6][N][N];
  9. int vst[N][N][N], dep[N][N][N];
  10. char dc[7] = "FBLRUD";
  11. int dx[6] = {1, -1, 0, 0, 0, 0};
  12. int dy[6] = {0, 0, -1, 1, 0, 0};
  13. int dz[6] = {0, 0, 0, 0, -1, 1};
  14. char ch[N][N][N];
  15. T prv[N][N][N];
  16. int rk[555];
  17. int main() {
  18. int n;
  19. for(int i = 0; i < 6; i++) rk[dc[i]] = i;
  20. for(int qq = 1; ; qq++) {
  21. scanf("%d", &n);
  22.  
  23. if(n == 0) break;
  24. fgets(a[0][0], N, stdin);
  25. for(int d = 0; d < 6; d++) {
  26. for(int i(0); i < n; i++) {
  27. fgets(a[d][i], N, stdin);
  28. //scanf("%s", a[d][i]);
  29. cout << a[d][i] << endl;
  30. }
  31. }
  32. for(int i(0); i < n; i++) {
  33. for(int j(0); j < n; j++) {
  34. if(a[2][i][n - j - 1] == '#') a[0][i][j] = '#';
  35. if(a[3][i][n - j - 1] == '#') a[1][i][j] = '#';
  36. if(a[5][n - i - 1][j] == '#') a[4][i][j] = '#';
  37. }
  38. }
  39. int F = 0, R = 1, U = 4;
  40. vector<T> q;
  41. q.push_back({n - 2, n - 2, n - 2});
  42. for(int i(0); i < n; i++) for(int j(0); j < n; j++) for(int k(0); k < n; k++) {
  43. vst[i][j][k] = 0;
  44. }
  45. vst[n - 2][n - 2][n - 2] = true;
  46. dep[n - 2][n - 2][n - 2] = 0;
  47. for(int op(0); op < (int)q.size(); op++) {
  48. int x = q[op].x, y = q[op].y, z = q[op].z;
  49. for(int d(0); d < 6; d++) {
  50. int X = x + dx[d], Y = y + dy[d], Z = z + dz[d];
  51. if( a[F][n - Z - 1][n - Y - 1] == ' '
  52. && a[R][n - Z - 1][X] == ' '
  53. && a[U][n - X - 1][n - Y - 1] == ' ') {
  54. if(vst[X][Y][Z] == false) {
  55. vst[X][Y][Z] = 1;
  56. dep[X][Y][Z] = dep[x][y][z] + 1;
  57. q.push_back({X, Y, Z});
  58. prv[X][Y][Z] = q[op];
  59. ch[X][Y][Z] = dc[d];
  60. }else if(dep[X][Y][Z] == dep[x][y][z] + 1) {
  61. if(rk[dc[d]] < rk[ch[X][Y][Z]]) {
  62. prv[X][Y][Z] = q[op];
  63. ch[X][Y][Z] = dc[d];
  64. }
  65. }
  66. }
  67. }
  68. }
  69. string ans;
  70. int x = 1, y = 1, z = 1;
  71. while(!(x == n - 2 && y == n - 2 && z == n - 2)) {
  72. ans.push_back(ch[x][y][z]);
  73. auto t = prv[x][y][z];
  74. x = t.x, y = t.y, z = t.z;
  75. }
  76. cout << ans << endl;
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement