| Task: | Abandoned warehouse |
| Sender: | aalto26bm_042 |
| Submission time: | 2026-09-07 17:22:27 +0300 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | ACCEPTED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | ACCEPTED | 0.00 s | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.00 s | details |
| #5 | ACCEPTED | 0.00 s | details |
| #6 | ACCEPTED | 0.03 s | details |
| #7 | ACCEPTED | 0.08 s | details |
| #8 | ACCEPTED | 0.07 s | details |
| #9 | ACCEPTED | 0.07 s | details |
| #10 | ACCEPTED | 0.07 s | details |
| #11 | ACCEPTED | 0.00 s | details |
| #12 | ACCEPTED | 0.00 s | details |
| #13 | ACCEPTED | 0.06 s | details |
| #14 | ACCEPTED | 0.00 s | details |
| #15 | ACCEPTED | 0.00 s | details |
| #16 | ACCEPTED | 0.06 s | details |
Code
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define die(x) return cout << x << endl, 0
#define all(o) o.begin(), o.end()
#define endl '\n'
#define IOS ios::sync_with_stdio(0), cin.tie(0)
#define FILE freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout)
#define SZ(x) ((int)(x).size())
typedef long double ld;
typedef long long ll;
int gcd(int x,int y){ return (!y ? x : gcd(y, x%y)); }
int to_int(string sconvert){stringstream geek(sconvert);int xconvert = 0; geek >> xconvert; return xconvert;}
const int MAXN=2000+30,MAX_LOG=40,INF=1e18+10,MOD=1e9+7;
const double PI = acos(-1);
int mod(int x) { return (x % MOD + MOD) % MOD; }
int power(int x,int y){
if(y==0)return 1;
int c=power(x,y/2);
c=(c*c)%MOD;
if(y%2)c=(c*x)%MOD;
return c;
}
int n;
int a[MAXN];
// vector<int> g[MAXN];
// int visited[MAXN];
// int color[MAXN];
// int max_color = 1;
// int is_impossible = 0;
// vector<pair<int,int>> edges;
// int dfs(int v, int root){
// visited[v]=1;
// int ones = 0;
// int twos = 0;
// int is_leaf = 1;
// for(int u:g[v]){
// // cout <<v<<"pp pp"<<u<<" " <<visited[u]<<endl;
// if(!visited[u]){
// is_leaf = 0;
// int c = dfs(u, root);
// if (c == 1) ones++;
// else twos ++;
// }
// else{
// int c = color [u];
// // cout <<c<<endl;
// if (c != 0){
// if (c == 1) ones++;
// else twos ++;
// }
// }
// }
// if(is_leaf){
// // cout<<v<<" kk"<<g[v].size()<<endl;
// color[v] = 1;
// return 1;
// }
// // cout<<ones<<" "<<twos<<"--- "<<v<<endl;
// if (ones>0 && twos >0){
// is_impossible=1;
// return 1;
// }
// else if (ones>=0){
// color[v]=2;
// return 2;
// }
// else{
// color[v]=1;
// return 1;
// }
// }
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
const char dir[4] = {'D', 'U', 'R', 'L'};
// vector<string> grid[MAXN];
int MAIN(){
int n, m;
cin>>n>>m;
vector<string> grid(n);
int sr = -1, sc = -1, br = -1, bc = -1;
for (int i = 0; i < n; ++i) {
cin>>grid[i];
for (int j = 0; j < m; ++j) {
if (grid[i][j] == 'A') {
sr = i;
sc = j;
}
else if (grid[i][j] == 'B') {
br = i;
bc = j;
}
}
}
vector<vector<int>> dist(n, vector<int>(m, -1));
vector<vector<pair<int, int>>> parent(n, vector<pair<int, int>>(m, {-1, -1}));
vector<vector<char>> moveto(n, vector<char>(m, '?'));
queue<pair<int, int>> q;
q.push({sr, sc});
dist[sr][sc] = 0;
while (!q.empty()) {
auto [r, c] = q.front();
q.pop();
for (int k = 0; k < 4; ++k) {
int nr= r + dx[k];
int nc=c+dy[k];
if (nr < 0 || nr >= n || nc < 0 || nc >= m) continue;
if (grid[nr][nc] == '#')continue;
if (dist[nr][nc] != -1)continue;
dist[nr][nc] = dist[r][c] + 1;
parent[nr][nc] = {r, c};
moveto[nr][nc] = dir[k];
q.push({nr, nc});
}
}
if (dist[br][bc] == -1) {
cout << "NO\n";
return 0;
}
cout<<"YES"<<endl;
cout<<dist[br][bc]<<endl;
string path;
int r = br, c = bc;
while (r != sr || c != sc) {
path.push_back(moveto[r][c]);
auto [pr, pc] = parent[r][c];
r = pr;
c = pc;
}
reverse(path.begin(), path.end());
cout<<path<<endl;
return 0;
}
int32_t main(){
IOS;
int t=1;
// cin>>t;
while(t--)MAIN();
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: 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: 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... |
