
注:先不要看我的输出内容。
#include<bits/stdc++.h>
using namespace std;
int n,m,vis[115][80];
int dx[4]={0,0,-1,1};
int dy[4]={1,-1,0,0};
char s[115][80];
struct node{
int x;
int y;
};
queue<node>q;
void bfs(int x,int y){
q.push({x,y});
while(!q.empty()){
node a=q.front();
q.pop();
for(int i=0;i<4;++i){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&vis[nx][ny]==0){
vis[nx][ny]=vis[x][y]+1;
q.push({nx,ny});
}
if(nx==n&&ny==m){
printf("%d",vis[nx][ny]-1);
return;
}
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j)
scanf("%c",&s[i][j]);
getchar();
}
vis[1][1]=1;
printf("1 1\n");
if(!(n==1||m==1)) bfs(1,1);
else printf("1 1\n");
return 0;
}