Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long
- #define ull unsigned long long
- #define s second
- #define f first
- #include<vector>
- #include<set>
- #include<map>
- #include<stack>
- const ll Mod = 1000000007;
- using namespace std;
- void salma(){
- ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
- cout << fixed << setprecision(0);
- }
- int n , m;
- vector<vector<char>> grid;
- vector<vector<bool>> vis;
- bool valid(int r , int c){
- return r >= 0 && r < n && c >= 0 && c < m;
- }
- bool findEnd(int r , int c){
- if(!valid(r , c) || grid[r][c] == '*' || vis[r][c] == 1) return false;
- vis[r][c] = true;
- if(grid[r][c] == 'E') return true;
- if(findEnd(r , c - 1)) return true;
- if(findEnd(r , c + 1)) return true;
- if(findEnd(r - 1 , c)) return true;
- if(findEnd(r + 1 , c)) return true;
- return false;
- }
- int main(){
- // freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- salma();
- cin >> n >> m;
- grid.assign(n , vector<char> (m));
- vis.resize(n , vector<bool> (m));
- pair<int, int> start;
- for(int i = 0 ; i < n ; i++){
- for(int j = 0 ; j < m; j++){
- cin >> grid[i][j];
- if(grid[i][j] == 'S') start = {i, j};
- }
- }
- cout << (findEnd(start.f, start.s) ? "YES" : "NO");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement