結果

問題 No.424 立体迷路
ユーザー ikd
提出日時 2016-09-23 01:12:53
言語 C++11
(gcc 13.3.0)
結果
WA  
実行時間 -
コード長 1,085 bytes
コンパイル時間 471 ms
コンパイル使用メモリ 62,316 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-11-17 15:44:56
合計ジャッジ時間 1,309 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 5
other AC * 19 WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<queue>

using namespace std;
typedef pair<int, int> pii;
int h, w, sx, sy, gx ,gy;
int fld[50][50];
int reached[50][50];
pii dd[]={{1, 0}, {-1, 0}, {0, 1}, {0, -1}};

int abs(int a, int b){
   return max(a-b, b-a);
}

void dfs(int pi, int pj, int i, int j){

   if(!(0<=i&&i<h&&0<=j&&j<w)) return;
   if(reached[i][j]) return;
   int dif=abs(fld[pi][pj], fld[i][j]);
   if(dif>=2) return;
   if(dif==0){
      int mv=abs(pi, i)+abs(pj, j);
      if(mv==2){
         int mh=fld[(pi+i)/2][(pj+j)/2];
         if(mh>=fld[pi][pj]) return;
      }
   }

   reached[i][j]=1;

   for(pii d: dd){
      int ni, nj;
      ni=i+d.first;
      nj=j+d.second;
      dfs(i, j, ni, nj);
      dfs(i, j, ni+d.first, nj+d.second);
   }
}

int main(){

   cin>> h>> w>> sx>> sy>> gx>> gy;
   sx--; sy--; gx--; gy--;
   string b[h];
   for(int i=0; i<h; i++){
      cin>> b[i];
   }
   for(int i=0; i<h; i++){
      for(int j=0; j<w; j++){
         fld[i][j]=b[i][j]-'0';
      }
   }

   dfs(sx, sy, sx, sy);

   cout<< (reached[gx][gy]?"YES":"NO") << endl;

   return 0;
}
0