ekaterinaparamonova

Untitled

Apr 23rd, 2020
364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. # https://habr.com/ru/post/264189/
  2. # волновой алгоритм
  3.  
  4.  
  5.  
  6. n, m = map(int, input().split())
  7. a = []
  8. for i in range(n):
  9.     a.append([0] * m)
  10. for i in range(n):
  11.     s = input()
  12.     for j in range(m):
  13.         if s[j] == "1":
  14.             start = [i, j]
  15.         elif s[j] == "0":
  16.             finish = [i, j]
  17.         elif s[j] == "#":
  18.             a[i][j] = -1
  19.  
  20. d = 0
  21. if a[0][1] == 0:
  22.     a[0][1] = d + 1
  23. if a[1][0] == 0:
  24.     a[1][0] = d + 1
  25. d = 1
  26. move = True
  27. while move:
  28.     for i in range(n):
  29.         for j in range(m):
  30.             if a[i][j] == d:
  31.                 if [i, j] == finish:
  32.                     move = False
  33.                     break
  34.                 if i + 1 < n:
  35.                     if a[i + 1][j] == 0:
  36.                         a[i + 1][j] = d + 1
  37.                 if i - 1 >= 0:
  38.                     if a[i - 1][j] == 0:
  39.                         a[i - 1][j] = d + 1
  40.                 if j + 1 < m:
  41.                     if a[i][j + 1] == 0:
  42.                         a[i][j + 1] = d + 1
  43.                 if j - 1 >= 0:
  44.                     if a[i][j - 1] == 0:
  45.                         a[i][j - 1] = d + 1
  46.     d += 1
  47. print(start)
  48. print(finish)
  49. for x in a:
  50.     print(*x)
Advertisement
Add Comment
Please, Sign In to add comment