Submission details
Task:Abandoned warehouse
Sender:aalto26bm_013
Submission time:2026-09-07 17:49:51 +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.40 sdetails
#7--details
#8--details
#9--details
#10--details
#11ACCEPTED0.12 sdetails
#12ACCEPTED0.10 sdetails
#13--details
#14ACCEPTED0.04 sdetails
#15ACCEPTED0.04 sdetails
#16--details

Code

if __name__ == "__main__":
    h, w = [int(x) for x in input().split(" ")]
    
    m = []
    for x in range(0, h):
        m.append(input())
    # print(m)
    A = 0
    B = 0
    edges = {}
    def index(r,c):
        return w*r+c
    def addEdge(a,b):
        if not (a in edges):
            edges[a] = []
        if not (b in edges):
            edges[b] = []
        edges[a].append(b)
        edges[b].append(a)
    for ir in range(0,h):
        row = m[ir]
        for ic in range(0,w):
            if row[ic] == "A":
                A = index(ir, ic)
            elif row[ic] == "B":
                B = index(ir, ic)
            elif row[ic] != ".":
                continue
            
            if ic > 0 and m[ir][ic-1] != "#":
                addEdge(index(ir, ic), index(ir, ic-1))
            if ic < w - 1 and m[ir][ic+1] != "#":
                addEdge(index(ir, ic), index(ir, ic+1))
            if ir > 0 and m[ir-1][ic] != "#":
                addEdge(index(ir, ic), index(ir-1, ic))
            if ir < h - 1 and m[ir+1][ic] != "#":
                addEdge(index(ir, ic), index(ir+1, ic))
    # print(A, B, edges)
    q = []
    visited = [False]*(w*h)
    distance = [0]*(w*h)
    
    visited[A] = True;
    distance[A] = (0, [])
    q.append(A)
    
    i = 0
    while i < len(q):
        s = q[i]
        i += 1
        for u in set(edges[s]):
            if visited[u]:
                continue
            visited[u] = True
            distance[u] = (distance[s][0] + 1, distance[s][1] + [s])
            q.append(u)

    # print(visited)
    if visited[B] == False:
        print( "NO")
        exit()
    print("YES")
    print(distance[B][0])
    path = distance[B][1]
    c=A
    for s in path[1:] + [B]:
        if c == s - w:
            print("D",end="")
        elif c == s + w:
            print("U",end="")
        elif c == s + 1:
            print("L",end="")
        elif c == s - 1:
            print("R",end="")
        c=s

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
RDD

Test 6

Verdict: ACCEPTED

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

correct output
NO

user output
NO

Test 7

Verdict:

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

correct output
YES
626
LLLDDRDDDDLDLDDLLLLLDDDDLLDLDL...

user output
(empty)

Test 8

Verdict:

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

correct output
YES
364
LULULLULLLULLLLLUULLLLUUULLLLL...

user output
(empty)

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)