只能过一个测试点哦
#include<bits/stdc++.h>
using namespace std;
typedef pair<int ,int> PII;
const int N=110;
int a[N][N],dis[N][N];
vector<int>ans;
int n,m;
int dx[4]={1,-1,0,0};
int dy[4]={0,0,1,-1};
void dfs(int x,int y)
{
if(x==n&&y==m)
{
ans.push_back(dis[n][m]);
return;
}
for(int i=0;i<4;i++)
{
int tx=x+dx[i];
int ty=y+dy[i];
if(tx>0&&tx<=n&&ty>0&&ty<=m&&a[tx][ty]==0)
{
dis[tx][ty]=dis[x][y]+1;
a[tx][ty]=1;
dfs(tx,ty);
a[tx][ty]=0;
dis[tx][ty]--;
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)cin>>a[i][j];
}
a[1][1]=1;
dfs(1,1);
int answer=1e9;
for(auto x:ans)
{
answer=min(x,answer);
}
cout<<answer;
return 0;
}
### 爆赞