建议降黄
查看原帖
建议降黄
933074
Muyangmiku楼主2024/12/1 19:59

如题,本题一看就能想到是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;
}

@_bzy @离散小波变换°

2024/12/1 19:59
加载中...