提出 #9304685
ソースコード 拡げる
from collections import deque
class GoalFound(Exception):
def __init__(self, distance):
self.distance = distance
class Solver:
def __init__(self, R, C, start, goal, maze) -> None:
self.R = R
self.C = C
self.start = start
self.goal = goal
self.maze = maze
self.visited = set()
self.queue = deque([])
def lookup(self, y, x):
return self.maze[y-1][x-1] # to zero origin
def breadth_first_search(self, y, x, distance):
if (y, x) == self.goal:
raise GoalFound(distance)
if (y, x) in self.visited:
return
if not (1 <= y <= self.R):
return
if not (1 <= x <= self.C):
return
if self.lookup(y, x) == "#":
return
if self.lookup(y, x) == ".":
self.visited.add((y, x))
self.queue.append((y - 1, x, distance + 1))
self.queue.append((y, x - 1, distance + 1))
self.queue.append((y, x + 1, distance + 1))
self.queue.append((y + 1, x, distance + 1))
def solve(self) -> str:
self.queue.append((self.start[0], self.start[1], 0))
try:
while len(self.queue) > 0:
task = self.queue.popleft()
self.breadth_first_search(*task)
except GoalFound as e:
return e.distance
if __name__ == "__main__":
R, C = list(map(int, input().split()))
start = tuple(map(int, input().split()))
goal = tuple(map(int, input().split()))
maze = []
for _ in range(R):
maze.append(list(input()))
s = Solver(R, C, start, goal, maze)
print(s.solve())
提出情報
| 提出日時 |
|
| 問題 |
C - 幅優先探索 |
| ユーザ |
hagino3000 |
| 言語 |
Python (3.4.3) |
| 得点 |
100 |
| コード長 |
1742 Byte |
| 結果 |
AC |
| 実行時間 |
30 ms |
| メモリ |
3700 KiB |
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
100 / 100 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt |
| All |
subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| subtask0_sample01.txt |
AC |
20 ms |
3316 KiB |
| subtask0_sample02.txt |
AC |
20 ms |
3316 KiB |
| subtask0_sample03.txt |
AC |
30 ms |
3700 KiB |
| subtask1_01.txt |
AC |
26 ms |
3444 KiB |
| subtask1_02.txt |
AC |
26 ms |
3444 KiB |
| subtask1_03.txt |
AC |
26 ms |
3444 KiB |
| subtask1_04.txt |
AC |
30 ms |
3700 KiB |
| subtask1_05.txt |
AC |
25 ms |
3444 KiB |
| subtask1_06.txt |
AC |
28 ms |
3572 KiB |
| subtask1_07.txt |
AC |
21 ms |
3316 KiB |
| subtask1_08.txt |
AC |
21 ms |
3316 KiB |
| subtask1_09.txt |
AC |
26 ms |
3444 KiB |
| subtask1_10.txt |
AC |
22 ms |
3444 KiB |
| subtask1_11.txt |
AC |
30 ms |
3700 KiB |
| subtask1_12.txt |
AC |
27 ms |
3572 KiB |
| subtask1_13.txt |
AC |
26 ms |
3444 KiB |
| subtask1_14.txt |
AC |
21 ms |
3316 KiB |
| subtask1_15.txt |
AC |
27 ms |
3444 KiB |
| subtask1_16.txt |
AC |
27 ms |
3444 KiB |
| subtask1_17.txt |
AC |
29 ms |
3700 KiB |
| subtask1_18.txt |
AC |
28 ms |
3572 KiB |
| subtask1_19.txt |
AC |
26 ms |
3444 KiB |
| subtask1_20.txt |
AC |
26 ms |
3444 KiB |
| subtask1_21.txt |
AC |
27 ms |
3572 KiB |
| subtask1_22.txt |
AC |
26 ms |
3444 KiB |