#include <iostream>
#include <vector>
using namespace std;
int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
void dfs(const vector<vector<char>>& mmap, vector<vector<bool>>& visited, int x,
int y) {
if (mmap[x][y] == '#' || visited[x][y]) return; // 退出条件
visited[x][y] = true;
for (int i = 0; i < 4; i++) {
int nextx = x + dir[i][0];
int nexty = y + dir[i][1];
if (nextx < 0 || nextx >= visited.size() || nexty < 0 || nexty >= visited[0].size()) continue;
dfs(mmap, visited, nextx, nexty);
}
}
int main() {
int a, b;
cin >> a >> b;
vector<vector<char>> mmap(a, vector<char>(b, '.'));
char sig;
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
cin >> sig;
mmap[i][j] = sig;
}
}
vector<vector<bool>> visited(a, vector<bool>(b, false));
dfs(mmap, visited, 0, 0);
if (visited[a - 1][b - 1]) cout << "Yes" << endl;
else cout << "No" << endl;
}
DFS

京公网安备 11010502036488号