哪里错了
2023-07-29 10:52:07
发布于:河北
#include<bits/stdc++.h>
using namespace std;
struct point{
int x,y,turns;
bool operator<(const point &n1) const{
return n1.turns<turns;
}
};
int nums[101][101],fx[4][2]={0,-1,0,1,-1,0,1,0},n,m,a,b,c,d;
bool vis[101][101];
int bfs(){
priority_queue<point> q;
q.push({a,b,0});
while(!q.empty()){
int xx=q.top().x,yy=q.top().y,turns=q.top().turns;
q.pop();
for(int i=0;i<4;i++){
xx+=fx[i][0],yy+=fx[i][1];
while(xx>=0 && xx<n && yy>=0 && yy<m && !nums[xx][yy]){
if(!vis[xx][yy]){
if(xxc && yyd) return turns;
vis[xx][yy]=1;
turns++;
q.push({xx,yy,turns});
}
xx+=fx[i][0],yy+=fx[i][1];
}
}
}
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>nums[i][j];
cin>>a>>b>>c>>d;
cout<<bfs();
}
全部评论 1
好的,数据已经正式上传到主题库了。可以再尝试提交一下看看。
2024-06-18 来自 浙江
0
有帮助,赞一个