本人代码用了BFS,但却RE了3个点。有没有大佬帮帮我?
代码:
#include<bits/stdc++.h>
using namespace std;
int m,a[310][310],dx[4]={1,0,-1,0},dy[4]={0,1,0,-1};
void bfs(int x,int y){
int q[100100][3];
int t=0,w=1;
q[1][0]=x;
q[1][1]=y;
q[1][2]=0;
do{
t++;
for(int i=0;i<=3;i++){
int tx,ty;
tx=q[t][0]+dx[i];
ty=q[t][1]+dy[i];
if(tx>=0&&ty>=0&&(q[t][2]+1<a[tx][ty]||a[tx][ty]==-1)){
w++;
q[w][0]=tx;
q[w][1]=ty;
q[w][2]=q[t][2]+1;
if(a[tx][ty]==-1){
cout<<q[w][2];
return;
}
a[tx][ty]=0;
}
}
}while(w>t);
cout<<-1;
}
int main(){
cin>>m;
memset(a,-1,sizeof(a));
for(int i=1;i<=m;i++){
int mx,my,mt;
cin>>mx>>my>>mt;
if(mt<a[mx][my]||a[mx][my]==-1)
a[mx][my]=mt;
if(mt<a[mx+1][my]||a[mx+1][my]==-1)
a[mx+1][my]=mt;
if(mt<a[mx-1][my]||a[mx-1][my]==-1)
a[mx-1][my]=mt;
if(mt<a[mx][my+1]||a[mx][my+1]==-1)
a[mx][my+1]=mt;
if(mt<a[mx][my-1]||a[mx][my-1]==-1)
a[mx][my-1]=mt;
}
bfs(0,0);
return 0;
}