#include <bits/stdc++.h>
using namespace std;
int n, m;
string s;
int a[104][104];
int visited[104][104];
int y, x, c, d;
const int dy[] = {-1, 0, 1, 0};
const int dx[] = {0, 1, 0, -1};
void bfs(int y, int x){
visited[y][x] = 1;
queue<pair<int, int>> q;
q.push({y, x});
while(q.size()){
tie(c, d) = q.front();
q.pop();
for(int i=0; i<4; i++){
int ny = c+dy[i];
int nx = d+dx[i];
if(visited[ny][nx]) continue;
if(ny<0 || ny>=n || nx<0 || nx>=m) continue;
if(a[ny][nx] == 0) continue;
visited[ny][nx] = visited[c][d] + 1;
q.push({ny, nx});
}
}
}
int main(){
cin >> n >> m;
for(int i=0; i<n; i++){
cin >> s;
for(int j=0; j<m; j++){
a[i][j] = s[j]-'0';
}
}
bfs(0, 0);
cout << visited[n-1][m-1];
return 0;
}
댓글