Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int vis[201][201],vis2[201][201];
- int f;
- int dx[] = {1,0,-1,0};
- int dy[] = {0,1,0,-1};
- void dfs(int x,int y,vector<vector<char>>& arr,int n,int m)
- {
- vis[x][y]=1;
- for(int i=0;i<4;i++)
- {
- int x1 = x+dx[i];
- int y1 = y+dy[i];
- if(x1>=0&&x1<n&&y1>=0&&y1<m&&arr[x1][y1]=='O'&&!vis[x1][y1])
- {
- dfs(x1,y1,arr,n,m);
- if(x1==0||x1==n-1||y1==0||y1==m-1)
- f=1;
- }
- }
- }
- void dfs2(int x,int y,vector<vector<char>>& arr,int n,int m)
- {
- vis2[x][y]=1;
- arr[x][y] = 'X';
- for(int i=0;i<4;i++)
- {
- int x1 = x+dx[i];
- int y1 = y+dy[i];
- if(x1>=0&&x1<n&&y1>=0&&y1<m&&arr[x1][y1]=='O')
- {
- cout<<x1<<" "<<y1<<endl;
- dfs2(x1,y1,arr,n,m);
- }
- }
- }
- class Solution {
- public:
- void solve(vector<vector<char>>& arr) {
- int n = arr.size();
- int m = arr[0].size();
- memset(vis,0,sizeof(vis));
- memset(vis,0,sizeof(vis2));
- for(int i=0;i<n;i++)
- {
- for(int j=0;j<m;j++)
- {
- if(arr[i][j]=='O'&&!vis[i][j])
- {
- f=0;
- dfs(i,j,arr,n,m);
- if(f==0&&i!=n-1&&j!=m-1&&i!=0&&j!=0)
- {
- // cout<<i<<" "<<j<<endl;
- dfs2(i,j,arr,n,m);
- }
- }
- }
- }
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement