Advertisement
El_GEMMY

go from S to E

Sep 10th, 2021
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define ull unsigned long long
  4. #define s second
  5. #define f first
  6. #include<vector>
  7. #include<set>
  8. #include<map>
  9. #include<stack>
  10. const ll Mod = 1000000007;
  11. using namespace std;
  12. void salma(){
  13.     ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  14.     cout << fixed << setprecision(0);
  15. }
  16. int n , m;
  17. vector<vector<char>> grid;
  18. vector<vector<bool>> vis;
  19.  
  20. bool valid(int r , int c){
  21.     return r >= 0 && r < n && c >= 0 && c < m;
  22. }
  23.  
  24. bool findEnd(int r , int c){
  25.     if(!valid(r , c) || grid[r][c] == '*' || vis[r][c] == 1) return false;
  26.  
  27.     vis[r][c] = true;
  28.  
  29.     if(grid[r][c] == 'E') return true;
  30.  
  31.     if(findEnd(r , c - 1)) return true;
  32.     if(findEnd(r , c + 1)) return true;
  33.     if(findEnd(r - 1 , c)) return true;
  34.     if(findEnd(r + 1 , c)) return true;
  35.  
  36.     return false;
  37. }
  38. int main(){
  39. //    freopen("input.txt", "r", stdin);
  40. //    freopen("output.txt", "w", stdout);
  41.     salma();
  42.     cin >> n >> m;
  43.     grid.assign(n , vector<char> (m));
  44.     vis.resize(n , vector<bool> (m));
  45.     pair<int, int> start;
  46.     for(int i = 0 ; i < n ; i++){
  47.         for(int j = 0 ; j < m; j++){
  48.             cin >> grid[i][j];
  49.             if(grid[i][j] == 'S') start = {i, j};
  50.         }
  51.     }
  52.  
  53.     cout << (findEnd(start.f, start.s) ? "YES" : "NO");
  54.  
  55.  
  56.  
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement