fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n, m, a[104][104], visited[104][104];
  4. int dy[] = {1, 0, -1, 0};
  5. int dx[] = {0, 1, 0, -1};
  6. void dfs(int y, int x){
  7. for(int i = 0; i < 4; i++){
  8. int ny = y + dy[i];
  9. int nx = x + dx[i];
  10. if(ny < 0 || nx < 0 || ny >= n || nx >= m || visited[ny][nx] || !a[ny][nx]) continue;
  11. visited[ny][nx] = visited[y][x] + 1;
  12. dfs(ny, nx);
  13. }
  14. }
  15.  
  16. int main(){
  17. scanf("%d %d", &n, &m);
  18. for(int i = 0; i < n; i++){
  19. for(int j = 0; j < m; j++){
  20. scanf("%1d", &a[i][j]);
  21. }
  22. }
  23. visited[0][0] = 1;
  24. dfs(0, 0);
  25. printf("%d\n", visited[n - 1][m - 1]);
  26. }
Success #stdin #stdout 0.01s 5284KB
stdin
4 6
101111
101010
101011
111011
stdout
15