#include<bits/stdc++.h>
using namespace std;
int n,m,a[1005][1005],bx,by,ex,ey;
int b[1005][1005],dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
struct ni
{
int x,y,t,yn;
}q[1000005];
void bfs(int x,int y)
{
int nx=x,ny=y,nt=0,head=0,tail=1,nyn=0;
b[nx][ny]=1;
q[0]={nx,ny,0,0};
while(head!=tail)
{
for(int i=0;i<4;i++)
{
nx=q[head].x+dx[i];
ny=q[head].y+dy[i];
nt=q[head].t+1;
if(a[nx][ny]==4) nyn=1;
else nyn=0;
if(nx<1||nx>n||ny<1||ny>m||b[nx][ny]==1) continue;
if(q[head].yn+nyn>1) continue;
q[tail].yn=nyn+q[head].yn;
q[tail]={nx,ny,nt};
b[nx][ny]=1;
if(nx==ex&&ny==ey&&q[head].yn==1)
{
cout<<q[head].t;
exit(0);
}
tail++;
}
head++;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
cin>>a[i][j];
if(a[i][j]==2) bx=i,by=j;
if(a[i][j]==3) ex=i,ey=j;
}
bfs(bx,by);
return 0;
}
help,为啥没输出?