Submission #3925776


Source Code Expand

import java.util.*;
import java.awt.Point;
class Main{
    static int cnt;
    static char[][] maze;
    static int[][] count;
    static int R;
    static int C;
    static Queue<Point> q;
    public static void main(String[] args) {
	Scanner sc = new Scanner(System.in);
	R = sc.nextInt();
	C = sc.nextInt();
	Point start = new Point(sc.nextInt()-1, sc.nextInt()-1);
	Point end = new Point(sc.nextInt()-1, sc.nextInt()-1);
	maze = new char[R][C];
	count = new int[R][C];
	for(int i = 0; i<R; i++) {
            for(int j = 0; j<C; j++) {
                count[i][j] = 100000;
	    }
        }
	for(int i = 0; i<R; i++) {
	    String nextLine = sc.next();
	    for(int j = 0; j<C; j++) {
		maze[i][j] = nextLine.charAt(j);
	    }
	}

	q = new ArrayDeque<Point>();
	q.add(start);
	count[(int)(start.getX())][(int)(start.getY())] = 0;
	cnt = 0;
	while(q.peek() != null) {
	    Point p = q.poll();
	    if(count[(int)(end.getX())][(int)(end.getY())]<100000) break;
	    addPQ(p);
	    // 周りをqueueに入れる処理
	    //countを増やす
	    //塗り替え作業
	}
	System.out.println(count[(int)(end.getX())][(int)(end.getY())]);

    }

    public static void addPQ(Point p) {
	int x = (int)(p.getX());
	int y = (int)(p.getY());
	if(maze[x][y] == '#') return;
	maze[x][y] = '#';
	//	System.out.println("x,y = " + x + " , " + y);
	if(y+1<C && maze[x][y+1] == '.') {
	    q.add(new Point(x,y+1));
	    count[x][y+1] = count[x][y] + 1;
	}
	if(y-1>=0 && maze[x][y-1] == '.') {
	    q.add(new Point(x,y-1));
	    count[x][y-1] = count[x][y] + 1;

	}
	if(x-1>=0 && maze[x-1][y] == '.') {
	    q.add(new Point(x-1,y));
	    count[x-1][y] = count[x][y] + 1;
	}
	if(x+1<R && maze[x+1][y] == '.') {
	    q.add(new Point(x+1,y));
	    count[x+1][y] = count[x][y] + 1;
	}
    }

}

Submission Info

Submission Time
Task C - 幅優先探索
User MiraiNIKI
Language Java8 (OpenJDK 1.8.0)
Score 100
Code Size 1848 Byte
Status AC
Exec Time 117 ms
Memory 22868 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 98 ms 19668 KB
subtask0_sample02.txt AC 95 ms 21076 KB
subtask0_sample03.txt AC 106 ms 21332 KB
subtask1_01.txt AC 105 ms 19028 KB
subtask1_02.txt AC 115 ms 21716 KB
subtask1_03.txt AC 105 ms 22868 KB
subtask1_04.txt AC 107 ms 19412 KB
subtask1_05.txt AC 105 ms 19668 KB
subtask1_06.txt AC 107 ms 18772 KB
subtask1_07.txt AC 98 ms 18900 KB
subtask1_08.txt AC 103 ms 21844 KB
subtask1_09.txt AC 115 ms 18772 KB
subtask1_10.txt AC 103 ms 18644 KB
subtask1_11.txt AC 107 ms 21204 KB
subtask1_12.txt AC 107 ms 21716 KB
subtask1_13.txt AC 115 ms 19796 KB
subtask1_14.txt AC 103 ms 19412 KB
subtask1_15.txt AC 117 ms 21204 KB
subtask1_16.txt AC 106 ms 21716 KB
subtask1_17.txt AC 109 ms 20820 KB
subtask1_18.txt AC 105 ms 19796 KB
subtask1_19.txt AC 103 ms 19540 KB
subtask1_20.txt AC 104 ms 19028 KB
subtask1_21.txt AC 105 ms 19796 KB
subtask1_22.txt AC 115 ms 21716 KB