前提・実現したいこと
AtCoder過去問 「https://atcoder.jp/contests/abc088/tasks/abc088_d」 を解いていると直しても値が一致しない問題が出てきてしまいました。
何度見返しても自分コードのどこが間違えているのかわかりません。
該当のソースコード
python
1from collections import deque 2 3def bfs(sx, sy, gx, gy): 4 dist = [[0]*w for i in range(h)] #全頂点を未訪問 5 que = deque([(sy,sx)]) #初期条件 6 dist[sy][sx] = 1 #start訪問済み 7 directions = [(1, 0), (0, 1), (-1, 0), (0, -1)] 8 while que: 9 y,x = que.popleft() 10 for dirs in directions: 11 ny = y + dirs[0] 12 nx = x + dirs[1] 13 if not(0<=ny<h or 0<=nx<w): 14 continue 15 if G[ny][nx] == "#": 16 continue 17 if dist[ny][nx] == 0: 18 dist[ny][nx] = dist[y][x] + 1 19 que.append((ny, nx)) 20 if nx == w-1 and ny == h-1: 21 return dist[gy][gx] 22 return -1 23 24h,w = map(int,input().split()) 25G = [input() for i in range(h)] 26 27cnt = 0 28for i in range(h): 29 cnt += G[i].count('#') 30 31ans = bfs(0,0,w-1,h-1) 32if ans == -1: 33 print(-1) 34else: 35 score = h * w - cnt - ans 36 print(score) 37 38
試したこと
他の人の提出を見て修正
「https://atcoder.jp/contests/abc088/submissions/13364885」
↑BFSの書き方が近かったので参考にしました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー