这是20分的代码
bool bfs(int x){
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)vis[i][j]=0;
queue<node>dl;
dl.push(node{1,1});
while(!dl.empty()){
node t=dl.front();
dl.pop();
vis[t.x][t.y]=1;
for(int i=0;i<4;i++){
tx=t.x+dir[i][0],ty=t.y+dir[i][1];
if(!vis[tx][ty]&&a[tx][ty]<=x&&tx>=1&&tx<=n&&ty>=1&&ty<=m){
if(tx==n)return 1;
dl.push(node{tx,ty});
}
}
}
return 0;
}
把打标记移到将点加入队列的地方就能A(
bool bfs(int x){
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)vis[i][j]=0;
queue<node>dl;
dl.push(node{1,1});
vis[1][1]=1;//这
while(!dl.empty()){
node t=dl.front();
dl.pop();
for(int i=0;i<4;i++){
tx=t.x+dir[i][0],ty=t.y+dir[i][1];
if(!vis[tx][ty]&&a[tx][ty]<=x&&tx>=1&&tx<=n&&ty>=1&&ty<=m){
if(tx==n)return 1;
dl.push(node{tx,ty});
vis[tx][ty]=1;//这
}
}
}
return 0;
}