| Task: | Abandoned warehouse |
| Sender: | aalto26bm_024 |
| Submission time: | 2026-09-07 18:57:23 +0300 |
| Language: | Java |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | details |
| #2 | ACCEPTED | 0.06 s | details |
| #3 | ACCEPTED | 0.06 s | details |
| #4 | ACCEPTED | 0.07 s | details |
| #5 | ACCEPTED | 0.06 s | details |
| #6 | ACCEPTED | 0.38 s | details |
| #7 | ACCEPTED | 0.63 s | details |
| #8 | ACCEPTED | 0.68 s | details |
| #9 | ACCEPTED | 0.99 s | details |
| #10 | TIME LIMIT EXCEEDED | -- | details |
| #11 | ACCEPTED | 0.09 s | details |
| #12 | ACCEPTED | 0.08 s | details |
| #13 | ACCEPTED | 0.61 s | details |
| #14 | ACCEPTED | 0.06 s | details |
| #15 | ACCEPTED | 0.06 s | details |
| #16 | ACCEPTED | 0.95 s | details |
Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Queue;
import java.util.Set;
public class AbandonedWarehouse {
static int n, m;
static List<List<Integer>> adj;
static int[] prev;
static Queue<Integer> q = new ArrayDeque<>();
static int startNode = 0;
static int exitNode = 0;
static int iix(int i, int j) {
return i * m + j;
}
static boolean bfs() {
while (!q.isEmpty()) {
int node = q.poll();
if (node == exitNode) {
return true;
}
for (int s : adj.get(node)) {
if (prev[s] == -1) {
prev[s] = node;
q.add(s);
}
}
}
return false;
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] first = in.readLine().trim().split("\\s+");
n = Integer.parseInt(first[0]);
m = Integer.parseInt(first[1]);
char[][] inpt = new char[n][];
for (int i = 0; i < n; i++) {
inpt[i] = in.readLine().toCharArray();
}
Set<Character> valid = new HashSet<>(Arrays.asList('.', 'A', 'B'));
adj = new ArrayList<>(n * m);
for (int i = 0; i < n * m; i++) {
adj.add(new ArrayList<>());
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
int ix = iix(i, j);
if (!valid.contains(inpt[i][j])) {
continue;
}
if (inpt[i][j] == 'A') {
startNode = ix;
}
if (inpt[i][j] == 'B') {
exitNode = ix;
}
if (i + 1 < n && valid.contains(inpt[i + 1][j])) {
adj.get(ix).add(iix(i + 1, j));
}
if (i - 1 >= 0 && valid.contains(inpt[i - 1][j])) {
adj.get(ix).add(iix(i - 1, j));
}
if (j + 1 < m && valid.contains(inpt[i][j + 1])) {
adj.get(ix).add(iix(i, j + 1));
}
if (j - 1 >= 0 && valid.contains(inpt[i][j - 1])) {
adj.get(ix).add(iix(i, j - 1));
}
}
}
prev = new int[n * m];
Arrays.fill(prev, -1);
q.add(startNode);
boolean found = bfs();
StringBuilder sb = new StringBuilder();
if (found) {
sb.append("YES\n");
int node = exitNode;
List<Integer> trace = new ArrayList<>();
trace.add(node);
while (node != startNode) {
node = prev[node];
trace.add(node);
}
sb.append(trace.size() - 1).append('\n');
node = trace.remove(trace.size() - 1);
StringBuilder out = new StringBuilder();
while (!trace.isEmpty()) {
int next = trace.get(trace.size() - 1);
if (next > node) {
if (next == node + 1) {
out.append('R');
} else {
out.append('D');
}
} else {
if (next == node - 1) {
out.append('L');
} else {
out.append('U');
}
}
node = trace.remove(trace.size() - 1);
}
sb.append(out).append('\n');
} else {
sb.append("NO\n");
}
System.out.print(sb);
}
}
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: TIME LIMIT EXCEEDED
| 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: 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... |
