Advertisement
SalmaYasser

Untitled

Oct 26th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1.  
  2.  
  3. bool valid (int r , int c,vector < vector <char> > &grid,vector < vector <bool> > &vis )
  4. {
  5. return (r >= 0 && r < grid.size())
  6. && (c>= 0 && c< grid[0].size())
  7. && (grid[r][c] != 'D')
  8. && (!vis[r][c]);
  9. }
  10.  
  11. int fun (vector < vector <char> > &grid)
  12. {
  13. vector < vector <bool> > vis(grid.size(), vector <bool> (grid[0].size(), false));
  14.  
  15. vector < vector <int> > dir = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};
  16. queue < pair <int,int> > q;
  17. vis[0][0] = true;
  18. q.push({0,0});
  19. int steps = 1;
  20. while (!q.empty())
  21. {
  22. int sz = q.size();
  23. while (sz--)
  24. {
  25. pair <int,int> cur = q.front();
  26. q.pop();
  27. int cur_x = cur.first;
  28. int cur_y = cur.second;
  29. for (int i = 0 ; i < 4 ; i++)
  30. {
  31. int new_x = cur_x + dir[i][0];
  32. int new_y = cur_y + dir[i][1];
  33.  
  34. if (valid(new_x,new_y,grid,vis))
  35. {
  36. if (grid[new_x][new_y] == 'X')
  37. return steps;
  38. vis[new_x][new_y] = true;
  39. q.push({new_x,new_y});
  40. }
  41.  
  42. }
  43. }
  44. steps++;
  45.  
  46. }
  47. return -1;
  48.  
  49. }
  50.  
  51.  
  52. int main() {
  53. vector < vector <char> > grid = { {'O', 'O', 'O', 'O'},
  54. {'D', 'O', 'D', 'O'},
  55. {'O', 'O', 'O', 'O'},
  56. {'X', 'D', 'D', 'O'}};
  57.  
  58. cout << fun (grid);
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement