Submission #4309986
Source Code Expand
import java.util.ArrayDeque; import java.util.Queue; import java.util.Scanner; public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int R = sc.nextInt(); int C = sc.nextInt(); int sy = sc.nextInt()-1; int sx = sc.nextInt()-1; int gy = sc.nextInt()-1; int gx = sc.nextInt()-1; String scanR[] = new String[R]; for(int i = 0; i<R;i++) { scanR[i] = sc.next(); } int map[][] = new int [R][C]; // 1が道 0が壁 int t[] = new int[4]; // for(int i = 0; i<R; i++) { char[] c = scanR[i].toCharArray(); for(int j = 0; j<C; j++) { if(c[j] =='#') map[i][j] = 0; //壁 else map[i][j] = 1; //道 } } Queue <Node>queue = new ArrayDeque<>(); Node mapNode[][] = new Node[R][C]; for(int i=0; i<R; i++) { for(int j=0; j<C; j++) { boolean w = (map[i][j]==1) ? true:false; Node p = new Node(i,j,w); mapNode[i][j] =p; } } boolean flag = true; int counter = 0; for(int p = 0; p<R; p++) { for(int q = 0; q<C; q++) { boolean ue = true; boolean sita =true; boolean migi = true; boolean hidari =true; if(p==0) ue=false; if(p==R-1)sita =false; if(q==0) hidari=false; if(q==C-1)migi=false; if(map[p][q]==0) {mapNode[p][q] =null; continue;} else { if(ue&&map[p-1][q]==1)mapNode[p][q].setup(mapNode[p-1][q]); if(hidari&&map[p][q-1]==1)mapNode[p][q].setleft(mapNode[p][q-1]); if(migi&&map[p][q+1]==1)mapNode[p][q].setright(mapNode[p][q+1]); if(sita&&map[p+1][q]==1)mapNode[p][q].setdown(mapNode[p+1][q]); } } } queue.add(mapNode[sy][sx]); while(!queue.isEmpty()) { Node c = queue.poll(); if(c.i ==gy&& c.j ==gx)break; int countq = c.count; countq++; int i = c.i; int j = c.j; if(c.left!= null&&c.left.tukai) {c.left.tukai=false; c.left.count =countq; queue.offer(c.left);} if(c.down!= null&&c.down.tukai) {c.down.tukai=false;c.down.count =countq; queue.offer(c.down);} if(c.up != null&&c.up.tukai) {c.up.tukai=false;c.up.count = countq; queue.offer(c.up);} if(c.right != null&&c.right.tukai) {c.right.tukai=false;c.right.count = countq; queue.offer(c.right);} } int extractcount = mapNode[gy][gx].count; System.out.println(extractcount); } } class Node{ Node up=null; Node left=null; Node down=null; Node right=null; String xy; int i; //y int j; //x int count; //経路数 boolean h = false; //壁ならfalse; boolean tukai = true; //一度使ったらfalse public void setcount(int countq){ count= countq; } public Node(int c,int d,boolean y) { i = c; j = d; h =y; } public void setup(Node tup) { up = tup; } public void setdown(Node tdown) { down = tdown; } public void setleft(Node tleft) { left = tleft; } public void setright(Node tright) { right = tright; } }
Submission Info
Submission Time | |
---|---|
Task | C - 幅優先探索 |
User | anpan_jinro |
Language | Java8 (OpenJDK 1.8.0) |
Score | 100 |
Code Size | 3010 Byte |
Status | AC |
Exec Time | 107 ms |
Memory | 23508 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 | 98 ms | 20564 KB |
subtask0_sample02.txt | AC | 98 ms | 22612 KB |
subtask0_sample03.txt | AC | 104 ms | 20948 KB |
subtask1_01.txt | AC | 106 ms | 19668 KB |
subtask1_02.txt | AC | 105 ms | 23508 KB |
subtask1_03.txt | AC | 104 ms | 20564 KB |
subtask1_04.txt | AC | 106 ms | 21204 KB |
subtask1_05.txt | AC | 105 ms | 21716 KB |
subtask1_06.txt | AC | 104 ms | 21588 KB |
subtask1_07.txt | AC | 96 ms | 21844 KB |
subtask1_08.txt | AC | 105 ms | 23252 KB |
subtask1_09.txt | AC | 104 ms | 19156 KB |
subtask1_10.txt | AC | 103 ms | 21972 KB |
subtask1_11.txt | AC | 107 ms | 21844 KB |
subtask1_12.txt | AC | 105 ms | 21588 KB |
subtask1_13.txt | AC | 104 ms | 21204 KB |
subtask1_14.txt | AC | 100 ms | 18644 KB |
subtask1_15.txt | AC | 105 ms | 21204 KB |
subtask1_16.txt | AC | 104 ms | 20052 KB |
subtask1_17.txt | AC | 107 ms | 19540 KB |
subtask1_18.txt | AC | 105 ms | 21844 KB |
subtask1_19.txt | AC | 104 ms | 18640 KB |
subtask1_20.txt | AC | 102 ms | 21844 KB |
subtask1_21.txt | AC | 105 ms | 20948 KB |
subtask1_22.txt | AC | 103 ms | 21716 KB |