| Task: | Abandoned warehouse |
| Sender: | aalto26bm_034 |
| Submission time: | 2026-09-07 18:19:07 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | ACCEPTED | 0.04 s | details |
| #4 | ACCEPTED | 0.04 s | details |
| #5 | ACCEPTED | 0.04 s | details |
| #6 | ACCEPTED | 0.18 s | details |
| #7 | ACCEPTED | 0.66 s | details |
| #8 | ACCEPTED | 0.57 s | details |
| #9 | ACCEPTED | 0.71 s | details |
| #10 | ACCEPTED | 0.40 s | details |
| #11 | ACCEPTED | 0.08 s | details |
| #12 | ACCEPTED | 0.06 s | details |
| #13 | ACCEPTED | 0.39 s | details |
| #14 | ACCEPTED | 0.04 s | details |
| #15 | ACCEPTED | 0.04 s | details |
| #16 | ACCEPTED | 0.37 s | details |
Code
from collections import deque
inp = input().split(" ")
r, c = (int(inp[0]), int(inp[1]))
map = [[] for _ in range(r)]
seen = [[(-1, -1) for _ in range(c)] for _ in range(r)]
start = (0, 0)
end = (0, 0)
translate = {".": 1, "#": 2, "A": 3, "B": 4}
for i in range(r):
line = list(input())
for j in range(len(line)):
map[i].append(translate[line[j]])
if line[j] == "A":
start = (i, j)
elif line[j] == "B":
end = (i, j)
# perform bfs on the map
seen[start[0]][start[1]] = (-2, -2)
q = deque([start])
q.append(start)
while q:
cur = q.popleft()
cur_y, cur_x = cur
if map[cur_y][cur_x] == 4:
print("YES")
directions = []
# construct string
run = True
while cur_x != start[1] or cur_y != start[0]:
previous = seen[cur_y][cur_x]
if previous[0] - cur_y == 1:
directions.append("U")
elif previous[0] - cur_y == -1:
directions.append("D")
elif previous[1] - cur_x == 1:
directions.append("L")
elif previous[1] - cur_x == -1:
directions.append("R")
cur_x = previous[1]
cur_y = previous[0]
directions.reverse()
print(len(directions))
print("".join(directions))
quit()
# check up
if (
cur_y - 1 >= 0
and seen[cur_y - 1][cur_x][0] == -1
and (map[cur_y - 1][cur_x] == 1 or map[cur_y - 1][cur_x] == 4)
):
seen[cur_y - 1][cur_x] = (cur_y, cur_x)
q.append((cur_y - 1, cur_x))
# check left
if (
cur_x - 1 >= 0
and seen[cur_y][cur_x - 1][0] == -1
and (map[cur_y][cur_x - 1] == 1 or map[cur_y][cur_x - 1] == 4)
):
seen[cur_y][cur_x - 1] = (cur_y, cur_x)
q.append((cur_y, cur_x - 1))
# check down
if (
cur_y + 1 < r
and seen[cur_y + 1][cur_x][0] == -1
and (map[cur_y + 1][cur_x] == 1 or map[cur_y + 1][cur_x] == 4)
):
seen[cur_y + 1][cur_x] = (cur_y, cur_x)
q.append((cur_y + 1, cur_x))
# check right
if (
cur_x + 1 < c
and seen[cur_y][cur_x + 1][0] == -1
and (map[cur_y][cur_x + 1] == 1 or map[cur_y][cur_x + 1] == 4)
):
seen[cur_y][cur_x + 1] = (cur_y, cur_x)
q.append((cur_y, cur_x + 1))
print("NO")
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 10 ##.A###### #.##.##.## #####..### .######### ... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 10 10 B#..##.#.. #....A##.. #.....#..# .#......#. ... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 10 10 ...#..A.#. ....B...## ...#...... .......... ... |
| correct output |
|---|
| YES 3 LLD |
| user output |
|---|
| YES 3 LLD |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 10 10 .#........ .......... .......... ........#. ... |
| correct output |
|---|
| YES 1 R |
| user output |
|---|
| YES 1 R |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 10 10 .......... .......... .......... .......... ... |
| correct output |
|---|
| YES 3 RDD |
| user output |
|---|
| YES 3 DDR |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ##.###..######.#########.###.#... |
| correct output |
|---|
| NO |
| user output |
|---|
| NO |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ####.#.###....#.......##.##.#.... |
| correct output |
|---|
| YES 626 LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL... |
| user output |
|---|
| YES 626 LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL... |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ....#.##......#....#......#...... |
| correct output |
|---|
| YES 364 LULULLULLLULLLLLUULLLLUUULLLLL... |
| user output |
|---|
| YES 364 UUUUUULUUUUUUUUUUULLLUUUULLUUU... |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 .................#......#........ |
| correct output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
| user output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 ................................. |
| correct output |
|---|
| YES 947 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL... |
| user output |
|---|
| YES 947 UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU... |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 1000 3 A#B .#. .#. .#. ... |
| correct output |
|---|
| YES 2000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 2000 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 3 1000 A................................ |
| correct output |
|---|
| YES 2000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| YES 2000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 999 999 A#...#...#...#...#...#...#...#... |
| correct output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 1 3 A.B |
| correct output |
|---|
| YES 2 RR |
| user output |
|---|
| YES 2 RR |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 2 2 ## AB |
| correct output |
|---|
| YES 1 R |
| user output |
|---|
| YES 1 R |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 1000 1000 A................................ |
| correct output |
|---|
| YES 1998 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| YES 1998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
