Submission #9304685
Source Code Expand
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())
Submission Info
| Submission Time |
|
| Task |
C - 幅優先探索 |
| User |
hagino3000 |
| Language |
Python (3.4.3) |
| Score |
100 |
| Code Size |
1742 Byte |
| Status |
AC |
| Exec Time |
30 ms |
| Memory |
3700 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
100 / 100 |
| Status |
|
|
| Set Name |
Test Cases |
| 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 |
| Case Name |
Status |
Exec Time |
Memory |
| 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 |