Advertisement
yash123321

Untitled

Nov 1st, 2021
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. int vis[201][201],vis2[201][201];
  2. int f;
  3. int dx[] = {1,0,-1,0};
  4. int dy[] = {0,1,0,-1};
  5. void dfs(int x,int y,vector<vector<char>>& arr,int n,int m)
  6. {
  7.     vis[x][y]=1;
  8.     for(int i=0;i<4;i++)
  9.     {
  10.         int x1 = x+dx[i];
  11.         int y1 = y+dy[i];
  12.         if(x1>=0&&x1<n&&y1>=0&&y1<m&&arr[x1][y1]=='O'&&!vis[x1][y1])
  13.         {
  14.             dfs(x1,y1,arr,n,m);
  15.             if(x1==0||x1==n-1||y1==0||y1==m-1)
  16.                 f=1;
  17.         }
  18.     }
  19.    
  20. }
  21. void dfs2(int x,int y,vector<vector<char>>& arr,int n,int m)
  22. {
  23.     vis2[x][y]=1;
  24.     arr[x][y] = 'X';
  25.     for(int i=0;i<4;i++)
  26.     {
  27.         int x1 = x+dx[i];
  28.         int y1 = y+dy[i];
  29.         if(x1>=0&&x1<n&&y1>=0&&y1<m&&arr[x1][y1]=='O')
  30.         {
  31.             cout<<x1<<" "<<y1<<endl;
  32.             dfs2(x1,y1,arr,n,m);
  33.         }
  34.     }
  35.    
  36. }
  37. class Solution {
  38. public:
  39.     void solve(vector<vector<char>>& arr) {
  40.         int n = arr.size();
  41.         int m = arr[0].size();
  42.         memset(vis,0,sizeof(vis));
  43.         memset(vis,0,sizeof(vis2));
  44.         for(int i=0;i<n;i++)
  45.         {
  46.             for(int j=0;j<m;j++)
  47.             {
  48.                 if(arr[i][j]=='O'&&!vis[i][j])
  49.                 {
  50.                     f=0;
  51.                     dfs(i,j,arr,n,m);
  52.                     if(f==0&&i!=n-1&&j!=m-1&&i!=0&&j!=0)
  53.                     {
  54.                         // cout<<i<<" "<<j<<endl;
  55.                         dfs2(i,j,arr,n,m);
  56.                     }
  57.                 }
  58.             }
  59.         }
  60.     }
  61. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement