| Task: | Abandoned warehouse |
| Sender: | aalto26bm_024 |
| Submission time: | 2026-09-07 18:43:23 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.04 s | details |
| #3 | ACCEPTED | 0.04 s | details |
| #4 | ACCEPTED | 0.04 s | details |
| #5 | ACCEPTED | 0.04 s | details |
| #6 | ACCEPTED | 0.53 s | details |
| #7 | ACCEPTED | 0.84 s | details |
| #8 | ACCEPTED | 0.84 s | details |
| #9 | ACCEPTED | 0.98 s | details |
| #10 | ACCEPTED | 0.92 s | details |
| #11 | ACCEPTED | 0.07 s | details |
| #12 | ACCEPTED | 0.07 s | details |
| #13 | TIME LIMIT EXCEEDED | -- | details |
| #14 | ACCEPTED | 0.04 s | details |
| #15 | ACCEPTED | 0.04 s | details |
| #16 | ACCEPTED | 0.86 s | details |
Code
import sys
from collections import deque
input = sys.stdin.readline
n, m = map(int, input().split())
inpt = []
for _ in range(n):
inpt.append(list(input()))
def iix(i: int, j: int) -> int:
return i * m + j
exit_node = 0
start_node = 0
valid = set([".", "A", "B"])
adj = [[] for _ in range(n * m)]
for i in range(n):
for j in range(m):
ix = iix(i, j)
if inpt[i][j] not in valid:
continue
if inpt[i][j] == "A":
start_node = ix
if inpt[i][j] == "B":
exit_node = ix
if i + 1 < n and inpt[i + 1][j] in valid:
adj[ix].append((iix(i + 1, j)))
if i - 1 >= 0 and inpt[i - 1][j] in valid:
adj[ix].append((iix(i - 1, j)))
if j + 1 < m and inpt[i][j + 1] in valid:
adj[ix].append((iix(i, j + 1)))
if j - 1 >= 0 and inpt[i][j - 1] in valid:
adj[ix].append((iix(i, j - 1)))
q = deque([start_node])
prev = [-1] * (n * m)
def bfs() -> bool:
while q:
node = q.popleft()
if node == exit_node:
return True
for s in adj[node]:
if prev[s] == -1:
prev[s] = node
q.append(s)
return False
found = bfs()
if found:
print("YES")
node = exit_node
trace = [node]
while node != start_node:
node = prev[node]
trace.append(node)
print(len(trace) - 1)
node = trace.pop()
out = ""
while len(trace) > 0:
next = trace[-1]
if next > node:
if next == node + 1:
out += "R"
else:
out += "D"
else:
if next == node - 1:
out += "L"
else:
out += "U"
node = trace.pop()
print(out)
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: ACCEPTED
| input |
|---|
| 1000 1000 .................#......#........ |
| correct output |
|---|
| YES 1003 LLLLLLLLLLLLLLLLLLLLLLLLLDLLLL... |
| user output |
|---|
| YES 1003 DDDDDDDDDDDDDDDDDLDDDDDDDDDDDD... |
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: TIME LIMIT EXCEEDED
| 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: ACCEPTED
| input |
|---|
| 1000 1000 A................................ |
| correct output |
|---|
| YES 1998 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR... |
| user output |
|---|
| YES 1998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
