結果
問題 | No.424 立体迷路 |
ユーザー |
|
提出日時 | 2016-09-22 23:03:31 |
言語 | Python2 (2.7.18) |
結果 |
AC
|
実行時間 | 18 ms / 2,000 ms |
コード長 | 1,335 bytes |
コンパイル時間 | 537 ms |
コンパイル使用メモリ | 7,040 KB |
実行使用メモリ | 8,448 KB |
最終ジャッジ日時 | 2024-07-05 07:05:53 |
合計ジャッジ時間 | 1,243 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 21 |
ソースコード
#!/usr/bin/env python#coding:utf8import syssys.setrecursionlimit(3000)def read():row, col = map(int, raw_input().split())sr, sc, gr, gc = map(int, raw_input().split())sr -= 1sc -= 1gr -= 1gc -= 1b = []for i in range(row):b.append(map(int, raw_input()))return row, col, sr, sc, gr, gc, bdef dfs(r, c, visited, gr, gc, b):if r == gr and c == gc:return Truevisited[r][c] = Truefor dr, dc in [(-1, 0), (0, 1), (1, 0), (0, -1)]:nr = r + drnc = c + dcnr2 = r + dr * 2nc2 = c + dc * 2if (0 <= nr < len(visited) and 0 <= nc < len(visited[0])) and \not visited[nr][nc] and \abs(b[nr][nc] - b[r][c]) <= 1 and dfs(nr, nc, visited, gr, gc, b):return Trueif (0 <= nr2 < len(visited) and 0 <= nc2 < len(visited[0])) and \not visited[nr2][nc2] and \b[nr][nc] <= b[r][c] and b[nr2][nc2] == b[r][c] and dfs(nr2, nc2, visited, gr, gc, b):return Truereturn Falsedef work((row, col, sr, sc, gr, gc, b)):visited = [[False for c in range(col)] for r in range(row)]if dfs(sr, sc, visited, gr, gc, b):print "YES"else:print "NO"if __name__ == "__main__":work(read())