代码
#include<bits/stdc++.h>
using namespace std;
int g[101][101];
typedef pair<int,int> PII;
queue<PII> q;
int dx[4]={0,0,1,-1};
int dy[4]={1,-1,0,0};
int n,m;
void dfs()
{
q.push(make_pair(1,1));
g[1][1]=1;
while(q.size())
{
PII t=q.front();
q.pop();
int x1=t.first;
int y1=t.second;
for(int i=0;i<4;i++)
if(!g[x1+dx[i]][y1+dy[i]]&&x1+dx[i]<=n&&y1+dy[i]<=m&&x1+dx[i]>=1&&y1+dy[i]>=1)
{
g[x1+dx[i]][y1+dy[i]]=g[x1][y1]+1;
q.push(make_pair(x1+dx[i],y1+dy[i]));
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>g[i][j];
dfs();
cout<<g[n][m]-1;
}
核心
广度优先搜索
nb