6
查看原帖
6
1227340
2012gg楼主2024/6/23 09:48
#include<iostream>
#include<queue>
using namespace std;
struct node{
	int x,y,step;
};
queue <node> q;
int n,m,sx,sy,ex,ey;
int map[105][105];
int vis[105][105];
int fx[5][2]={0,1,1,0,0,-1,-1,0};
void bfs(){
	node a={sx,sy,0};
	q.push(a);
	vis[sx][sy]=1;
	while(!q.empty()){
		node s=q.front();
		for(int i=0;i<4;i++){
			int nx=s.x+fx[i][0];
			int ny=s.y+fx[i][1];
			if(nx>n||nx<1||ny>m||ny<1||vis[nx][ny]||map[nx][ny]) continue;
			vis[nx][ny]=1;
			a.x=nx,a.y=ny,a.step=s.step+1;
			q.push(a);
			if(ex==nx&&ey==ny){
				cout<<a.step;
				return;
			}
			
		}
		q.pop();
	}
	
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	for(int j=1;j<=m;j++){
    		cin>>map[i][j];
		}
	}
	cin>>sx>>sy>>ex>>ey;
	bfs();
	return 0;
}
2024/6/23 09:48
加载中...