Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- # DOESN'T PASS VALIDATOR 1 WHY????????
- # def dfs2(node, visited=set()):
- # if node in visited:
- # return 0
- # visited.add(node)
- # y, x = node
- # gold = int(maze[y][x]) if maze[y][x].isdigit() else 0
- # print(node, visited, file=sys.stderr)
- # return gold + max(dfs2(n, visited) for n in graph[node])
- def dfs(node, visited=set()):
- if node in visited:
- return 0
- y, x = node
- gold = int(maze[y][x]) if maze[y][x].isdigit() else 0
- print(node, visited, file=sys.stderr)
- return gold + max(dfs(n, visited | {node}) for n in graph[node])
- h, w = [int(i) for i in input().split()]
- maze = [[*input()] for _ in range(h)]
- graph = {}
- for y in range(h):
- for x in range(w):
- if maze[y][x] == 'X':
- start = y, x
- maze[y][x] = '0'
- if maze[y][x] != '#':
- neighbours = []
- for Y, X in [(y-1,x), (y+1,x), (y,x+1), (y,x-1)]:
- if 0 <= Y < h and 0 <= X < w:
- if maze[Y][X] != '#':
- neighbours.append((Y, X))
- graph.setdefault((y,x), neighbours)
- # dfs2(start)
- print(dfs(start))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement