#include<bits/stdc++.h>
using namespace std;
int tx,ty,lx,ly,n,m,t,hp=6,ans=1e8;
int ma[11][11],dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
void dfs(int x,int y,int hp){
if(hp==0||t>m*n||t>ans) return;
if(ma[x][y]==4) hp=6;
if(x==lx&&y==ly) ans=min(t,ans);
else{
for(int i=0;i<4;i++){
tx=x+dir[i][0],ty=y+dir[i][1];
if(tx<=0||tx>n||ty<=0||ty>m||ma[tx][ty]==0) continue;
++t;
dfs(tx,ty,hp-1);
--t;
}
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>ma[i][j];
if(ma[i][j]==2) tx=i,ty=j;
if(ma[i][j]==3) lx=i,ly=j;
}
}
dfs(tx,ty,hp);
if(ans!=1e8) cout<<ans;
else cout<<-1;
return 0;
}
第1个点TLE,救救孩子吧!