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 |
|
|
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 |