Submission #4016427


Source Code Expand

import java.util.*;

class Main {
    class Point {
        int r;
        int c;

        public Point(int r, int c) {
            this.r = r;
            this.c = c;
        }
    }

    public void main() {
        Scanner scanner = new Scanner(System.in);
        String[] rc = scanner.nextLine().split(" ", 2);
        int r = Integer.parseInt(rc[0]);
        int c = Integer.parseInt(rc[1]);

        String[] sysx = scanner.nextLine().split(" ", 2);
        int sy = Integer.parseInt(sysx[0]) - 1;
        int sx = Integer.parseInt(sysx[1]) - 1;

        String[] gygx = scanner.nextLine().split(" ", 2);
        int gy = Integer.parseInt(gygx[0]) - 1;
        int gx = Integer.parseInt(gygx[1]) - 1;

        int[][] count = new int[r][c];
        boolean[][] movable = new boolean[r][c];
        for (int i = 0; i < r; i++) {
            String line = scanner.nextLine();
            for (int j = 0; j < c; j++) {
                movable[i][j] = (line.charAt(j) == '.');
                count[i][j] = -1;
            }
        }

        Queue<Point> queue = new LinkedList<>();
        queue.add(new Point(sy, sx));
        count[sy][sx] = 0;

        Point point;
        while ((point = queue.poll()) != null) {
            if (point.r == gy && point.c == gx) {
                System.out.println(count[point.r][point.c]);
                return;
            }

            if (movable[point.r-1][point.c] && count[point.r-1][point.c] == -1) {
                count[point.r-1][point.c] = count[point.r][point.c] + 1;
                queue.add(new Point(point.r-1, point.c));
            }
            if (movable[point.r][point.c+1] && count[point.r][point.c+1] == -1) {
                count[point.r][point.c+1] = count[point.r][point.c] + 1;
                queue.add(new Point(point.r, point.c+1));
            }
            if (movable[point.r][point.c-1] && count[point.r][point.c-1] == -1) {
                count[point.r][point.c-1] = count[point.r][point.c] + 1;
                queue.add(new Point(point.r, point.c-1));
            }
            if (movable[point.r+1][point.c] && count[point.r+1][point.c] == -1) {
                count[point.r+1][point.c] = count[point.r][point.c] + 1;
                queue.add(new Point(point.r+1, point.c));
            }
        }
    }

    public static void main(String[] args) {
        new Main().main();
    }
}

Submission Info

Submission Time
Task C - 幅優先探索
User k0kubun
Language Java8 (OpenJDK 1.8.0)
Score 100
Code Size 2450 Byte
Status AC
Exec Time 102 ms
Memory 22612 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
All subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 93 ms 19924 KB
subtask0_sample02.txt AC 94 ms 20564 KB
subtask0_sample03.txt AC 100 ms 19156 KB
subtask1_01.txt AC 98 ms 19796 KB
subtask1_02.txt AC 99 ms 19924 KB
subtask1_03.txt AC 102 ms 16980 KB
subtask1_04.txt AC 102 ms 21460 KB
subtask1_05.txt AC 100 ms 19540 KB
subtask1_06.txt AC 102 ms 19668 KB
subtask1_07.txt AC 94 ms 20556 KB
subtask1_08.txt AC 100 ms 19028 KB
subtask1_09.txt AC 99 ms 21716 KB
subtask1_10.txt AC 98 ms 21716 KB
subtask1_11.txt AC 99 ms 19796 KB
subtask1_12.txt AC 101 ms 21844 KB
subtask1_13.txt AC 100 ms 22612 KB
subtask1_14.txt AC 98 ms 19028 KB
subtask1_15.txt AC 99 ms 21716 KB
subtask1_16.txt AC 98 ms 19412 KB
subtask1_17.txt AC 100 ms 21844 KB
subtask1_18.txt AC 99 ms 17748 KB
subtask1_19.txt AC 99 ms 18640 KB
subtask1_20.txt AC 97 ms 18772 KB
subtask1_21.txt AC 100 ms 21204 KB
subtask1_22.txt AC 100 ms 21588 KB