Advertisement
Guest User

Treasure Hunt

a guest
Jul 3rd, 2022
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.17 KB | None | 0 0
  1. import sys
  2.  
  3. # DOESN'T PASS VALIDATOR 1 WHY????????
  4.  
  5. # def dfs2(node, visited=set()):
  6. #     if node in visited:
  7. #         return 0
  8. #     visited.add(node)
  9. #     y, x = node
  10. #     gold = int(maze[y][x]) if maze[y][x].isdigit() else 0
  11. #     print(node, visited, file=sys.stderr)
  12. #     return gold + max(dfs2(n, visited) for n in graph[node])
  13.  
  14. def dfs(node, visited=set()):
  15.     if node in visited:
  16.         return 0
  17.     y, x = node
  18.     gold = int(maze[y][x]) if maze[y][x].isdigit() else 0
  19.     print(node, visited, file=sys.stderr)
  20.     return gold + max(dfs(n, visited | {node}) for n in graph[node])
  21.  
  22. h, w = [int(i) for i in input().split()]
  23. maze = [[*input()] for _ in range(h)]
  24. graph = {}
  25.  
  26. for y in range(h):
  27.     for x in range(w):
  28.         if maze[y][x] == 'X':
  29.             start = y, x
  30.             maze[y][x] = '0'
  31.  
  32.         if maze[y][x] != '#':
  33.             neighbours = []
  34.             for Y, X in [(y-1,x), (y+1,x), (y,x+1), (y,x-1)]:
  35.                 if 0 <= Y < h and 0 <= X < w:
  36.                     if maze[Y][X] != '#':
  37.                         neighbours.append((Y, X))
  38.             graph.setdefault((y,x), neighbours)
  39.  
  40. # dfs2(start)
  41. print(dfs(start))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement