Submission #162100


Source Code Expand

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
 
import java.util.*;
import java.util.Map.Entry;
 
public class Main {
 
	public static boolean is_ok(int x, int y, int C, int R){
		if(x < 0 || y < 0 || x >= C || y >= R){
			return false;
		}else{
			return true;
		}
	}
	
	public static int[][] move_dir = new int[][]{{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
	
	public static void main(String[] args) throws IOException{
		Scanner sc = new Scanner(System.in);
		
		final int R = sc.nextInt();
		final int C = sc.nextInt();
		final int sy = sc.nextInt() - 1;
		final int sx = sc.nextInt() - 1;
		final int gy = sc.nextInt() - 1;
		final int gx = sc.nextInt() - 1;
		
		boolean[][] wall = new boolean[R][C];
		
		for(int i = 0; i < R; i++){
			char[] in = sc.next().toCharArray();
			
			for(int j = 0; j < C; j++){
				wall[i][j] = in[j] == '#';
			}
		}
		
		LinkedList<Integer> x_queue = new LinkedList<Integer>();
		LinkedList<Integer> y_queue = new LinkedList<Integer>();
		LinkedList<Integer> time_queue = new LinkedList<Integer>();
		boolean[][] visited = new boolean[R][C];
		
		visited[sy][sx] = true;
		x_queue.add(sx);
		y_queue.add(sy);
		time_queue.add(0);
		
		while(!time_queue.isEmpty()){
			final int x = x_queue.poll();
			final int y = y_queue.poll();
			final int time = time_queue.poll();
			
			if(x == gx && y == gy){
				System.out.println(time);
				break;
			}
			
			
			for(int[] move : move_dir){
				final int nx = x + move[0];
				final int ny = y + move[1];
				
				if(!is_ok(nx, ny, C, R)){
					continue;
				}else if(visited[ny][nx]){
					continue;
				}else if(wall[ny][nx]){
					continue;
				}
				
				visited[ny][nx] = true;
				x_queue.add(nx);
				y_queue.add(ny);
				time_queue.add(time + 1);
			}
		}
		
		
	}
	
	public static class Scanner {
		
		private BufferedReader br;
		private StringTokenizer tok;
		
		public Scanner(InputStream is) throws IOException{
			br = new BufferedReader(new InputStreamReader(is));
			getLine();
		}
		
		private void getLine() throws IOException{
			while(tok == null || !tok.hasMoreTokens()){
				tok = new StringTokenizer(br.readLine());
			}
		}
		
		private boolean hasNext(){
			return tok.hasMoreTokens();
		}
		
		public String next() throws IOException{
			if(hasNext()){
				return tok.nextToken();
			}else{
				getLine();
				return tok.nextToken();
			}
		}
		
		public int nextInt() throws IOException{
			if(hasNext()){
				return Integer.parseInt(tok.nextToken());
			}else{
				getLine();
				return Integer.parseInt(tok.nextToken());
			}
		}
		
		public long nextLong() throws IOException{
			if(hasNext()){
				return Long.parseLong(tok.nextToken());
			}else{
				getLine();
				return Long.parseLong(tok.nextToken());
			}
		}
		
		public double nextDouble() throws IOException{
			if(hasNext()){
				return Double.parseDouble(tok.nextToken());
			}else{
				getLine();
				return Double.parseDouble(tok.nextToken());
			}
		}
	}
}

Submission Info

Submission Time
Task C - 幅優先探索
User mondatto
Language Java (OpenJDK 1.7.0)
Score 100
Code Size 3171 Byte
Status AC
Exec Time 485 ms
Memory 20968 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 485 ms 20804 KB
subtask0_sample02.txt AC 440 ms 20704 KB
subtask0_sample03.txt AC 460 ms 20956 KB
subtask1_01.txt AC 459 ms 20832 KB
subtask1_02.txt AC 442 ms 20836 KB
subtask1_03.txt AC 464 ms 20824 KB
subtask1_04.txt AC 432 ms 20952 KB
subtask1_05.txt AC 457 ms 20824 KB
subtask1_06.txt AC 441 ms 20824 KB
subtask1_07.txt AC 439 ms 20820 KB
subtask1_08.txt AC 444 ms 20704 KB
subtask1_09.txt AC 447 ms 20824 KB
subtask1_10.txt AC 458 ms 20832 KB
subtask1_11.txt AC 432 ms 20968 KB
subtask1_12.txt AC 452 ms 20960 KB
subtask1_13.txt AC 440 ms 20836 KB
subtask1_14.txt AC 433 ms 20696 KB
subtask1_15.txt AC 459 ms 20828 KB
subtask1_16.txt AC 443 ms 20820 KB
subtask1_17.txt AC 456 ms 20892 KB
subtask1_18.txt AC 460 ms 20804 KB
subtask1_19.txt AC 442 ms 20828 KB
subtask1_20.txt AC 467 ms 20836 KB
subtask1_21.txt AC 436 ms 20960 KB
subtask1_22.txt AC 442 ms 20704 KB