Submission details
Task:Abandoned warehouse
Sender:aalto26bm_017
Submission time:2026-09-07 17:01:06 +0300
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#30.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.09 sdetails
#70.52 sdetails
#80.54 sdetails
#90.54 sdetails
#100.56 sdetails
#110.01 sdetails
#12ACCEPTED0.01 sdetails
#130.48 sdetails
#140.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.24 sdetails

Code

#include <bits/stdc++.h>

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);

    long long n, m;
    std::cin >> n >> m;

    int start = 0;
    int end = 0;
    std::vector<char> map(n*m);
    for (int i = 0; i < n*m; i++) {
        char f;
        std::cin >> f;
        map[i] = f;
        if (f == 'A') start = i;
        if (f == 'B') end = i;
    }

    std::vector<std::vector<int>> graph(n*m);
    for (int i = 0; i < n*m; i++) {
        if (map[i] == '#') continue;
        if (i >= m && map[i - m] != '#') {
            graph[i].push_back(i - m);
        }
        if (i % m != 0 && map[i - 1] != '#') {
            graph[i].push_back(i - 1);
        }
        if (i % m != m - 1 && map[i + 1] != '#') {
            graph[i].push_back(i + 1);
        }
        if (i <= (n-1)*m && map[i + m] != '#') {
            graph[i].push_back(i + m);
        }
    }

    std::vector visited(n*m, false);
    std::vector<std::string> path(n*m, "");

    visited[start]=true;

    std::stack<int> stack;
    stack.push(start);

    while (!stack.empty()) {
        const int v = stack.top();
        stack.pop();
        for (int w : graph[v]) {
            if (!visited[w]) {
                visited[w] = true;

                if (w == v-1) {
                    path[w] = path[v] + 'L';
                } else if (w == v+1) {
                    path[w] = path[v] + 'R';
                } else if (w == v-m) {
                    path[w] = path[v] + 'U';
                } else if (w == v+m) {
                    path[w] = path[v] + 'D';
                }

                if (w == end) {
                    std::cout << "YES\n" << path[end].size() << '\n' << path[end] << std::endl;
                    return 0;
                }
                stack.push(w);
            }
        }
    }
    std::cout << "NO" << std::endl;
    return 0;
}

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:

input
10 10
...#..A.#.
....B...##
...#......
..........
...

correct output
YES
3
LLD

user output
YES
27
DDDLLDDDDDDLLLUUULUURRUUURR

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:

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:

input
1000 3
A#B
.#.
.#.
.#.
...

correct output
YES
2000
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD...

user output
(empty)

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:

input
1 3
A.B

correct output
YES
2
RR

user output
(empty)

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