Advertisement
add1ctus

Зандани

Mar 9th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4. using namespace std;
  5.  
  6. bool visited[50][50];
  7. int dist[50][50];
  8.  
  9. int xd[] = {-1,1,0,0};
  10. int yd[] = {0,0,1,-1};
  11.  
  12. int main()
  13. {
  14. int n,m,startx, starty;
  15. cin>>n>>m;
  16.  
  17. char mat[n][m][4];
  18.  
  19. for(int i = 0 ; i < 4 ; ++i)
  20. {
  21. for(int j = 0 ; j < n ; ++j)
  22. {
  23. for(int k = 0 ; k < m ; ++k)
  24. {
  25. cin>>mat[j][k][i];
  26. dist[j][k] = 999999;
  27. }
  28. }
  29. }
  30. cin>>startx>>starty;
  31. dist[startx][starty] = 0;
  32.  
  33. for(;;)
  34. {
  35. int sx = -1, sy = -1;
  36. for(int i = 0 ; i < n ; ++i)
  37. for(int j = 0 ; j < m ; ++j)
  38. if(!visited[i][j] && (sx == -1 || dist[sx][sy] > dist[i][j]))
  39. {
  40. sx = i;
  41. sy = j;
  42. }
  43.  
  44. if(sx == -1)
  45. break;
  46.  
  47. visited[sx][sy] = true;
  48. for(int i = 0 ; i < 4 ; ++i)
  49. {
  50. int xx = sx + xd[i];
  51. int yy = sy + yd[i];
  52. if(xx >= 0 && xx < n && yy >= 0 && yy < m && !visited[xx][yy] && mat[sx][sy][i] != 'x')
  53. dist[xx][yy] = min(dist[xx][yy], dist[sx][sy] + mat[sx][sy][i] - '0');
  54. }
  55. }
  56.  
  57. int minDist = 999999;
  58.  
  59. for(int i = 0 ; i < m ; ++i)
  60. if(mat[0][i][0] != 'x')
  61. minDist = min(minDist, dist[0][i] + mat[0][i][0] - '0');
  62.  
  63. if(minDist == 999999)
  64. cout<<-1;
  65. else
  66. cout<<minDist;
  67.  
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement