fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const long long MaxN = 1e2 + 5;
  4. long long n,a[MaxN][MaxN][MaxN],d[MaxN][MaxN][MaxN];
  5. void dijikstra()
  6. {
  7. priority_queue<tuple<long long, long long, long long, long long>,
  8. vector<tuple<long long, long long, long long, long long>>,
  9. greater<tuple<long long, long long, long long, long long>>> pq;
  10. d[1][1][1]=0;
  11. pq.push({0,1,1,1});
  12. while(!pq.empty())
  13. {
  14. long long dxyz= get<0>(pq.top());
  15. long long x= get<1>(pq.top());
  16. long long y= get<2>(pq.top());
  17. long long z= get<3>(pq.top());
  18. pq.pop();
  19.  
  20. if(dxyz!=d[x][y][z]) continue;
  21.  
  22. if(x>1&&d[x-1][y][z]>d[x][y][z]+a[x-1][y][z])
  23. {
  24. d[x-1][y][z]=d[x][y][z]+a[x-1][y][z];
  25. pq.push({d[x-1][y][z],x-1,y,z});
  26. }
  27.  
  28. if(y>1&&d[x][y-1][z]>d[x][y][z]+a[x][y-1][z])
  29. {
  30. d[x][y-1][z]=d[x][y][z]+a[x][y-1][z];
  31. pq.push({d[x][y-1][z],x,y-1,z});
  32. }
  33.  
  34. if(z>1&&d[x][y][z-1]>d[x][y][z]+a[x][y][z-1])
  35. {
  36. d[x][y][z-1]=d[x][y][z]+a[x][y][z-1];
  37. pq.push({d[x][y][z-1],x,y,z-1});
  38. }
  39.  
  40. if(x<n&&d[x+1][y][z]>d[x][y][z]+a[x+1][y][z])
  41. {
  42. d[x+1][y][z]=d[x][y][z]+a[x+1][y][z];
  43. pq.push({d[x+1][y][z],x+1,y,z});
  44. }
  45.  
  46. if(y<n&&d[x][y+1][z]>d[x][y][z]+a[x][y+1][z])
  47. {
  48. d[x][y+1][z]=d[x][y][z]+a[x][y+1][z];
  49. pq.push({d[x][y+1][z],x,y+1,z});
  50. }
  51.  
  52. if(z<n&&d[x][y][z+1]>d[x][y][z]+a[x][y][z+1])
  53. {
  54. d[x][y][z+1]=d[x][y][z]+a[x][y][z+1];
  55. pq.push({d[x][y][z+1],x,y,z+1});
  56. }
  57.  
  58. }
  59. }
  60. void input()
  61. {
  62. cin >> n;
  63. for (long long i=1; i<=n; i++)
  64. {
  65. for (long long j=1; j<=n; j++)
  66. {
  67. for (long long k=1; k<=n; k++)
  68. {
  69. cin >> a[i][j][k];
  70. }
  71. }
  72. }
  73. }
  74. void solve()
  75. {
  76. memset(d,0x3f,sizeof(d));
  77. dijikstra();
  78. cout << d[n][n][n];
  79. }
  80. int main()
  81. {
  82. ios_base::sync_with_stdio(0);
  83. cin.tie(0);
  84. input();
  85. solve();
  86. }
Success #stdin #stdout 0.01s 13776KB
stdin
Standard input is empty
stdout
4557430888798830399