题解
2024-09-30 21:54:30
发布于:上海
5阅读
0回复
0点赞
#include<iostream>
#include<queue>
using namespace std;
int tn[4][2]={-1,0,0,-1,1,0,0,1};
struct loc{int x,y;};
struct Node{int x,y,turn;loc tmp;}t;
int main(){
int m,n;
while(cin>>n>>m){
if(!n) return 0;
int a[1001][1001],qu,a1,b1,a2,b2;
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
cin>>a[i][j];
}
}
cin>>qu;
while(qu--){
cin>>a1>>b1>>a2>>b2;
string ans="NO\n";
if(a[a1][b1]!=a[a2][b2]||a[a1][b1]==0||a[a2][b2]==0) {cout<<ans;continue;}
queue<Node>q;
q.push({a1,b1,0,{a1,b1}});
while(q.size()){
t=q.front();
q.pop();
if(t.x==a2&&t.y==b2) {
ans="YES\n";
break;
}
for(int i=0;i<4;i++){
int nx=t.x+tn[i][0],ny=t.y+tn[i][1];
if(nx>0&&nx<=n&&ny>0&&ny<=m&&(!a[nx][ny]||a[nx][ny]==a[a2][b2])){
if(nx==t.x&&t.tmp.x==nx||ny==t.y&&t.tmp.y==ny) q.push({nx,ny,t.turn,{t.x,t.y}});
else {q.push({nx,ny,t.turn+1,{t.x,t.y}});}
}
}
}
if(t.turn>2)cout<<"NO\n";
else cout<<ans;
}
}
}
全部评论 2
@刁雯姐
2024-10-04 来自 上海
0看不懂
@刁
2024-10-04 来自 上海
0
有帮助,赞一个