如题,本题一看就能想到是bfs,而bfs模板真的做得出来,顶多遍历数组有一些变化,不知为什么能评到蓝
以下是我的代码:
#include<bits/stdc++.h>
#define N 505
using namespace std;
struct node{int x,y;};
char a[N][N];
int n,m,r1,c1,r2,c2,dx[]={-1,0,1,0},dy[]={0,1,0,-1};
queue<node> q;
void bfs(){
while(!q.empty()){
int x=q.front().x,y=q.front().y;
q.pop();
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx==r2&&ny==c2&&a[nx][ny]=='X'){
printf("YES");
return;
}
if(nx<1||ny<1||nx>n||ny>m||a[nx][ny]=='X')
continue;
a[nx][ny]='X';
q.push({nx,ny});
}
}
printf("NO");
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
cin>>r1>>c1>>r2>>c2;
q.push({r1,c1});
bfs();
return 0;
}