fork download
  1. n, m = map(int, input().split())
  2. lab = [input() for i in range(n)]
  3.  
  4. for i in range(n):
  5. for j in range(m):
  6. if lab[i][j] == 'S': start = (i, j)
  7. elif lab[i][j] == 'F': finish = (i, j)
  8.  
  9. #print(start, finish)
  10. #print('='*30)
  11.  
  12. used = set()
  13. lvl = {(start[0], start[1], '')}
  14. ops = 0
  15.  
  16. while ops < 10:
  17. #print(ops)
  18. #print(used)
  19. #print(lvl)
  20. #print('='*30)
  21. used |= {i[:2] for i in lvl}
  22. ops += 1
  23. new_lvl = set()
  24. for now in lvl:
  25. for i, d in [
  26. ('U', (-1, 0)),
  27. ('D', (1, 0)),
  28. ('L', (0, -1)),
  29. ('R', (0, 1))
  30. ]:
  31. nxt = (now[0] + d[0], now[1] + d[1], now[2] + i)
  32. if not (0 <= nxt[0] < n and 0 <= nxt[1] < m): continue
  33. if lab[nxt[0]][nxt[1]] == '#': continue
  34. if nxt[:2] == finish:
  35. print(ops)
  36. print(nxt[2])
  37. exit()
  38. if nxt[:2] in used: continue
  39. new_lvl |= {nxt}
  40. lvl = {i for i in new_lvl}
  41. if not lvl:
  42. print(-1)
  43. exit()
Success #stdin #stdout 0.08s 14184KB
stdin
11 11
###########
#.#.......#
#.#.##..###
#...#.#.#.#
#####.#.#.#
#.#.#.....#
#.#.#.#####
#.#...F.#.#
#.#S#####.#
#.........#
###########
stdout
4
URRR