Submission details
Task:Abandoned warehouse
Sender:kookinnam
Submission time:2025-09-08 17:46:25 +0300
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.04 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.04 sdetails
#6ACCEPTED0.20 sdetails
#7ACCEPTED0.74 sdetails
#8ACCEPTED0.58 sdetails
#9--details
#10--details
#11ACCEPTED0.10 sdetails
#12ACCEPTED0.07 sdetails
#13--details
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16--details

Code

floor = "."
wall = "#"
Uolevi = "A"
exit = "B"


directions = [(-1, 0, 'U'), (1, 0, 'D'), (0, -1, 'L'), (0, 1, 'R')]

def function(n, m, warehouse):
    start = []
    end = []
    for i in range(n):
        for j in range(m):
            if warehouse[i][j] == Uolevi:
                start = (i, j)
            if warehouse[i][j] == exit:
                end = (i, j)
    if start == [] or end == []:
        print("NO")
        return None

    # BFS using list as queue
    queue = [start]
    # set up map
    visited = [[False]*m for _ in range(n)]
    # set starting point
    visited[start[0]][start[1]] = True

    parent = [[None]*m for _ in range(n)]
    
    head = 0  # index for the current element in queue
    while head < len(queue):
        x, y = queue[head]
        head += 1
        
        if (x, y) == end:
            # Reconstruct path
            path = []
            while (x, y) != start:
                px, py, move = parent[x][y]
                path.append(move)
                x, y = px, py
            path.reverse()

            return path
        
        for dx, dy, move in directions:
            nx, ny = x + dx, y + dy
            if 0 <= nx < n and 0 <= ny < m and not visited[nx][ny] and warehouse[nx][ny] != wall:
                visited[nx][ny] = True
                parent[nx][ny] = (x, y, move)
                queue.append((nx, ny))
    


def main():

    n, m = map(int, input().split())
    warehouse = []
    for i in range(n):
        warehouse.append(list(input()))
    
    result = function(n, m, warehouse)
    if result:
        print("YES")
        print(len(result))
        for i in result:
            print(i, end="")

    else:
        print("NO")
    return






if __name__ == "__main__":
    main()


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
LLLDDRDDDDDDLLDDLLDDDLDDLLLDDL...
Truncated

Test 8

Verdict: ACCEPTED

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

correct output
YES
364
LULULLULLLULLLLLUULLLLUUULLLLL...

user output
YES
364
UUUUUULUUUUUUUUUUULLLUUUULLUUU...
Truncated

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

Test 12

Verdict: ACCEPTED

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

correct output
YES
2000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...

user output
YES
2000
RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...
Truncated

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)