Submission #162591


Source Code Expand

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;

public class Main {
	private static int R, C;
	private static Pos s;
	private static Pos g;
	private static char[][] p;
	private static int[][] dist;
	private static int[] dx = {1,0,-1,0}, dy = {0,1,0,-1};
	
	public static void main(String args[]) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String line = br.readLine();
		String[] arrays = line.split(" ");
		
		R = Integer.parseInt(arrays[0]);
		C = Integer.parseInt(arrays[1]);
		
		line = br.readLine();
		arrays = line.split(" ");
		
		s = new Pos(Integer.parseInt(arrays[0])-1, Integer.parseInt(arrays[1])-1);
		
		line = br.readLine();
		arrays = line.split(" ");
		g = new Pos(Integer.parseInt(arrays[0])-1, Integer.parseInt(arrays[1])-1);
		
		p = new char[R][C];
		dist = new int[R][C];
		for(int i=0;i<R;i++){
			line = br.readLine();
			p[i] = line.toCharArray();
		}
		search();
		System.out.println(dist[g.Y][g.X]);
	}
	
	private static void search(){
		Queue<Pos> que = new LinkedList<Pos>();
		
		int[] cur_p = new int[2];
		
		que.offer(s);
		dist[s.Y][s.X] = 0;

		while(que.size() > 0) {
			Pos point = que.poll();
			if(point.Y == g.Y && point.X == g.X) break; 
			for(int i = 0; i < 4; i++) {
				cur_p[0] = point.Y + dy[i];
				cur_p[1] = point.X + dx[i];
				
				if(pos_check(cur_p)) {
					que.offer(new Pos(cur_p[0], cur_p[1]));
					dist[cur_p[0]][cur_p[1]] = dist[point.Y][point.X] + 1; 
				}
				
			}
		}
	}
	private static boolean pos_check(int[] pos){

		if(0 > pos[0] || 0 > pos[1] || R <= pos[0] || C <= pos[1]){
			return false;
		}
		if(p[pos[0]][pos[1]] == '#'){
			return false;
		}
		if((dist[pos[0]][pos[1]] != 0)){
			return false;
		}
		return true;
	}
	private static class Pos {
		private int Y, X;
		
		public Pos(int Y, int X) {
			this.Y = Y;
			this.X = X;
		} 
	}
}

Submission Info

Submission Time
Task C - 幅優先探索
User junminya
Language Java (OpenJDK 1.7.0)
Score 100
Code Size 2023 Byte
Status AC
Exec Time 416 ms
Memory 21168 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 399 ms 20396 KB
subtask0_sample02.txt AC 385 ms 20516 KB
subtask0_sample03.txt AC 412 ms 21132 KB
subtask1_01.txt AC 387 ms 20528 KB
subtask1_02.txt AC 389 ms 20528 KB
subtask1_03.txt AC 390 ms 20496 KB
subtask1_04.txt AC 411 ms 21168 KB
subtask1_05.txt AC 384 ms 20656 KB
subtask1_06.txt AC 407 ms 20840 KB
subtask1_07.txt AC 384 ms 20396 KB
subtask1_08.txt AC 390 ms 20528 KB
subtask1_09.txt AC 397 ms 20520 KB
subtask1_10.txt AC 388 ms 20524 KB
subtask1_11.txt AC 416 ms 21036 KB
subtask1_12.txt AC 403 ms 20964 KB
subtask1_13.txt AC 394 ms 20532 KB
subtask1_14.txt AC 385 ms 20528 KB
subtask1_15.txt AC 395 ms 20528 KB
subtask1_16.txt AC 389 ms 20528 KB
subtask1_17.txt AC 407 ms 20956 KB
subtask1_18.txt AC 400 ms 21040 KB
subtask1_19.txt AC 390 ms 20516 KB
subtask1_20.txt AC 392 ms 20628 KB
subtask1_21.txt AC 406 ms 20896 KB
subtask1_22.txt AC 393 ms 20660 KB