Advertisement
JouJoy

Q

Dec 12th, 2021
692
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.84 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. const int N = 505;
  7.  
  8. int n, m;
  9. int vis[N][N];
  10. char a[N][N];
  11.  
  12. void dfs(int i, int j)
  13. {
  14.     if (i<1 || j<1 || i>n || j>m)
  15.         return;
  16.     if (a[i][j] == 'D')
  17.         return;
  18.     if (a[i][j] == 'S')
  19.     {
  20.         cout << "No";
  21.         exit(0);
  22.     }
  23.     if (vis[i][j])
  24.         return;
  25.     vis[i][j] = 1;
  26.     dfs(i + 1, j);
  27.     dfs(i - 1, j);
  28.     dfs(i, j + 1);
  29.     dfs(i, j - 1);
  30. }
  31.  
  32. int main()
  33. {
  34.  
  35.     cin >> n >> m;
  36.     for (int i = 1; i <= n; i++)
  37.     {
  38.         for (int j = 1; j <= m; j++)
  39.         {
  40.             cin >> a[i][j];
  41.             if (a[i][j] == '.')
  42.                 a[i][j] = 'D';
  43.         }
  44.     }
  45.     for (int i = 1; i <= n; i++)
  46.     {
  47.         for (int j = 1; j <= m; j++)
  48.         {
  49.             if (a[i][j] == 'W')
  50.             {
  51.                 dfs(i, j);
  52.             }
  53.         }
  54.     }
  55.     cout << "Yes" << endl;
  56.     for (int i = 1; i <= n; i++)
  57.     {
  58.         for (int j = 1; j <= m; j++)
  59.         {
  60.             cout << a[i][j];
  61.         }
  62.         cout << endl;
  63.     }
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement