Submission details
Task:Abandoned warehouse
Sender:aalto26bm_011
Submission time:2026-09-08 14:12:22 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.07 sdetails
#2ACCEPTED0.07 sdetails
#3ACCEPTED0.07 sdetails
#4ACCEPTED0.07 sdetails
#5ACCEPTED0.07 sdetails
#6ACCEPTED0.25 sdetails
#7ACCEPTED0.77 sdetails
#8ACCEPTED0.67 sdetails
#9--details
#10--details
#11ACCEPTED0.13 sdetails
#12ACCEPTED0.11 sdetails
#13--details
#14ACCEPTED0.07 sdetails
#15ACCEPTED0.07 sdetails
#16--details

Code

import queue

n, m = [int(i) for i in input().split()]
h = n
w = m
maze = []
start_pos = None
end_pos = None
for y in range(h):
    line = list(input().strip())
    for x, c in enumerate(line):
        if c == "A":
            start_pos = (x, y)
        elif c == "B":
            end_pos = (x, y)
    maze.append(line)

search_queue = queue.Queue()
search_queue.put((start_pos[0], start_pos[1], (-1, -1)))
visited = [[False] * w for _ in range(h)]
visited[start_pos[1]][start_pos[0]] = True
dist = [[(-1, "", (-1, -1))] * w for _ in range(h)]
dist[start_pos[1]][start_pos[0]] = (0, "", (-1, -1))

moves = [(0, 1, "D"), (0, -1, "U"), (1, 0, "R"), (-1, 0, "L")]
found = False
found_dist = -1

while search_queue.qsize() != 0:
    i = search_queue.get()
    x, y, (old_x, old_y) = i

    for dx, dy, direction in moves:
        new_x = x + dx
        new_y = y + dy
        if new_x < 0 or new_x >= w or new_y < 0 or new_y >= h:
            continue
        if visited[new_y][new_x]:
            continue
        if maze[new_y][new_x] == "#":
            continue
        visited[new_y][new_x] = True

        old_dist, old_dir, _ = dist[y][x]
        dist[new_y][new_x] = (old_dist + 1, direction, (x, y))
        search_queue.put((new_x, new_y, (x, y)))

        if (new_x, new_y) == end_pos:
            found = True
            found_dist = old_dist + 1
            search_queue = queue.Queue()
            break

if found:
    print("YES")
    print(found_dist)
    path = []
    x, y = end_pos
    while True:
        dis, direction, (prev_x, prev_y) = dist[y][x]
        path.append(direction)
        if dis == 0:
            break
        x, y = prev_x, prev_y

    for i in reversed(path):
        print(i, end="")
    print()

else:
    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
DLL

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
RDDDDDLDDDDLDDDDLLLLLLDDLLLDDL...

Test 8

Verdict: ACCEPTED

input
1000 1000
....#.##......#....#......#......

correct output
YES
364
LULULLULLLULLLLLUULLLLUUULLLLL...

user output
YES
364
UUUUUULUUUUUUUUUUULLLUUUULLUUU...

Test 9

Verdict:

input
1000 1000
.................#......#........

correct output
YES
1003
LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL...

user output
(empty)

Test 10

Verdict:

input
1000 1000
.................................

correct output
YES
947
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL...

user output
(empty)

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:

input
999 999
A#...#...#...#...#...#...#...#...

correct output
YES
499998
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
(empty)

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:

input
1000 1000
A................................

correct output
YES
1998
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
(empty)