func_code_string: #include <bits/stdc++.h>   using namespace std;   int w, h;   char g[100][100], d[100][100];   bool use[100][100];   int dx[] = {-1, 0, 1, 0};   int dy[] = {0, -1, 0, 1};   bool is_valid(int y, int x) { return 0 <= y && y < h && 0 <= x && x < w; }   bool check() {     for (int i = 0; i < h; i++) {       for (int j = 0; j < w; j++) {         if (g[i][j] ==  B  && !use[i][j]) return true;       }     }     return false;   }   void dfs(int y, int x, int dir, bool can) {     if (!is_valid(y, x)) return;     if (g[y][x] ==  W ) return;     use[y][x] = true;     if (!can)       dfs(y + dy[dir], x + dx[dir], dir, can);     else {       dfs(y + dy[dir], x + dx[dir], dir, can);       for (int i = 0; i < 4; i++) {         if (i == dir) continue;         dfs(y + dy[i], x + dx[i], i, false);       }     }     return;   }   int main() {     cin >> h >> w;     for (int i = 0; i < h; i++) {       for (int j = 0; j < w; j++) {         cin >> g[i][j];         d[i][j] = g[i][j];       }     }     for (int i = 0; i < h; i++) {       for (int j = 0; j < w; j++) {         memset(use, 0, sizeof(use));         if (g[i][j] ==  W ) continue;         for (int k = 0; k < 4; k++) {           dfs(i, j, k, true);         }         if (check()) {           cout <<  NO  << endl;           return 0;         }       }     }     cout <<  YES  << endl;     return 0;   }   