#include<iostream>
using namespace std;
// 标记数组
bool vis[505][505];
// 地图数组
char mp[505][505];
// 偏移数组:上 下 左 右
int dx[4] = {-1, 1, 0, 0};
int dy[4] = { 0, 0,-1, 1};
// n,m表示地图大小
int n, m;
// 定义终点坐标
int ex,ey;
// flag表示能不能走到终点
bool flag = 0;
// 深搜dfs(x,y) 表示能不能从起点(x,y)走到终点
void dfs(int x, int y){
// 判断是否走到终点
if(x==ex && y==ey){
flag = 1;
return;
}
// 递归到四个方向:
for(int i=0;i<4;i++){
int xx = x + dx[i];
int yy = y + dy[i];
// 判断下一个坐标(xx, yy),是否可以到达
// 不能走出地图边界 障碍不能走 走过的不能走
if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&mp[xx][yy]!='#'&&vis[xx][yy]==0){
vis[xx][yy] = 1;
dfs(xx, yy);
}
}
}