rt,bfs只写出80ots,record
#include<bits/stdc++.h>
using namespace std;
int n,m,s[12][12],minn=1e9,sx,sy;
void dfs(int step,int blood,int x,int y){
--blood;
if(step>n*m||s[x][y]==0||blood==0||step>minn) return;
if(s[x][y]==3){
minn=min(minn,step);
return;
}
if(s[x][y]==4) blood=6;
++step;
dfs(step,blood,x+1,y);
dfs(step,blood,x-1,y);
dfs(step,blood,x,y+1);
dfs(step,blood,x,y-1);
return;
}
int main(){
cin>>n>>m;for(int i=1;i<=n;++i) for(int j=1;j<=m;++j){
cin>>s[i][j];
if(s[i][j]==2) sx=i,sy=j;
}
dfs(0,6,sx,sy);
cout<<((minn==1e9)?(-1):minn);
return 0;
}