| Task: | Abandoned warehouse |
| Sender: | aalto26bm_026 |
| Submission time: | 2026-09-07 16:45:57 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.01 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.06 s | details |
| #7 | ACCEPTED | 0.08 s | details |
| #8 | ACCEPTED | 0.07 s | details |
| #9 | ACCEPTED | 0.10 s | details |
| #10 | ACCEPTED | 0.09 s | details |
| #11 | ACCEPTED | 0.01 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.08 s | details |
| #14 | ACCEPTED | 0.00 s | details |
| #15 | ACCEPTED | 0.00 s | details |
| #16 | ACCEPTED | 0.10 s | details |
Compiler report
input/code.cpp: In function 'bool canVisit(std::pair<int, int>, const std::vector<std::vector<char> >&, const std::vector<std::vector<bool> >&)':
input/code.cpp:15:46: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<char> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
15 | return coords.first >= 0 && coords.first < labyrinth.size() && coords.second >= 0 && coords.second < labyrinth[0].size() &&
| ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
input/code.cpp:15:104: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
15 | return coords.first >= 0 && coords.first < labyrinth.size() && coords.second >= 0 && coords.second < labyrinth[0].size() &&
| ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~Code
#include <iostream>
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
using namespace std;
const int dx[4] = {-1, 1, 0, 0};
const int dy[4] = {0, 0, -1, 1};
const char dir_char[4] = { 'U', 'D', 'L', 'R' };
bool canVisit(pair<int, int> coords, const vector<vector<char>>& labyrinth, const vector<vector<bool>>& vis)
{
return coords.first >= 0 && coords.first < labyrinth.size() && coords.second >= 0 && coords.second < labyrinth[0].size() &&
!vis[coords.first][coords.second] && labyrinth[coords.first][coords.second] != '#';
}
int main()
{
int n, m;
cin >> n >> m;
vector<vector<char>> labyrinth(n, vector<char>(m));
int startX, startY;
int endX, endY;
startX = startY = endX = endY = -1;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
cin >> labyrinth[i][j];
if (labyrinth[i][j] == 'A')
{
startX = i;
startY = j;
}
if (labyrinth[i][j] == 'B')
{
endX = i;
endY = j;
}
}
}
vector<vector<bool>> vis(n, vector<bool>(m, false));
vector<vector<char>> parent(n, vector<char>(m));
bool found = false;
queue<pair<int, int>> q;
q.push(make_pair(startX, startY));
vis[startX][startY] = true;
while (!q.empty())
{
pair<int, int> point = q.front(); q.pop();
if (point.first == endX && point.second == endY)
{
found = true;
break;
}
for (int i = 0; i < 4; i++)
{
pair<int, int> newPoint = point;
newPoint.first += dx[i];
newPoint.second += dy[i];
if (canVisit(newPoint, labyrinth, vis))
{
vis[newPoint.first][newPoint.second] = true;
parent[newPoint.first][newPoint.second] = dir_char[i];
q.push(newPoint);
}
}
}
if (found)
{
string path = "";
pair<int, int> point = make_pair(endX, endY);
while (point.first != startX || point.second != startY)
{
char step = parent[point.first][point.second];
path += step;
if (step == 'U')
{
point.first++;
}
else if (step == 'D')
{
point.first--;
}
else if (step == 'L')
{
point.second++;
}
else if (step == 'R')
{
point.second--;
}
}
std::reverse(path.begin(), path.end());
cout << "YES" << endl;
cout << path.length() << endl;
cout << path << endl;
}
else
{
cout << "NO" << endl;
}
}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... |
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: ACCEPTED
| input |
|---|
| 999 999 A#...#...#...#...#...#...#...#... |
| correct output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
| user output |
|---|
| YES 499998 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD... |
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... |
