結果
問題 | No.424 立体迷路 |
ユーザー |
![]() |
提出日時 | 2017-02-04 03:12:59 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 117 ms / 2,000 ms |
コード長 | 1,947 bytes |
コンパイル時間 | 1,910 ms |
コンパイル使用メモリ | 80,688 KB |
実行使用メモリ | 41,344 KB |
最終ジャッジ日時 | 2024-07-05 07:13:55 |
合計ジャッジ時間 | 5,434 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 21 |
ソースコード
import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int H = sc.nextInt();int W = sc.nextInt();int sx = sc.nextInt()-1;int sy = sc.nextInt()-1;int gx = sc.nextInt()-1;int gy = sc.nextInt()-1;int [][] Hight = new int [H][W];int [][] dist = new int [H][W];for(int i=0; i<H; i++){String tmp = sc.next();for(int j=0; j<W; j++){Hight[i][j] = tmp.charAt(j)-'0';dist[i][j] = -1;}}Queue<Integer> q = new LinkedList<>();int [] dx = {1,0,-1,0};int [] dy = {0,1,0,-1};q.add(sx);q.add(sy);dist[sx][sy]=0;while(!q.isEmpty()){int x = q.poll();int y = q.poll();if(x==gx&&y==gy){System.out.println("YES");//print(H,W,dist);return;}for(int k=1; k<=2; k++){for(int i=0; i<4; i++){int nx = x+k*dx[i];int ny = y+k*dy[i];if(nx<0||ny<0||nx>=H||ny>=W)continue;if(dist[nx][ny]!=-1)continue;if( (k==1&&Math.abs(Hight[nx][ny]-Hight[x][y])<=1)||(k==2&&(Hight[nx][ny]-Hight[x][y])==0&&Hight[nx][ny]>Hight[(nx+x)/2][(ny+y)/2]) ){dist[nx][ny]=dist[x][y]+1;q.add(nx);q.add(ny);}}}}//print(H,W,dist);System.out.println("NO");}static void print(int H, int W, int[][]A){for(int i=0; i<H; i++){for(int j=0; j<W; j++){System.out.print(A[i][j]+" ");}System.out.println();}}}