結果
問題 |
No.424 立体迷路
|
ユーザー |
![]() |
提出日時 | 2025-07-28 14:21:57 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,167 bytes |
コンパイル時間 | 1,762 ms |
コンパイル使用メモリ | 198,996 KB |
実行使用メモリ | 7,720 KB |
最終ジャッジ日時 | 2025-07-28 14:22:01 |
合計ジャッジ時間 | 3,208 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 RE * 1 |
other | AC * 18 WA * 1 RE * 2 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:19:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 19 | scanf("%lld %lld %lld %lld %lld %lld",&n,&m,&sx,&sy,&gx,&gy); | ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ソースコード
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll n,m,mp[109][109]; ll sx,sy,gx,gy; ll dx[4]= {1,-1,0,0}; ll dy[4]= {0,0,1,-1}; bool vis[109][109]; struct _NODE { ll x,y; }; queue<_NODE> qe; signed main() { scanf("%lld %lld %lld %lld %lld %lld",&n,&m,&sx,&sy,&gx,&gy); memset(vis,false,sizeof(vis)); for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) { char ch; cin>>ch; mp[i][j]=ch-'0'; } qe.push((_NODE) { sx,sy }); vis[sx][sy]=true; while(!qe.empty()) { _NODE nw=qe.front(); qe.pop(); ll nwx=nw.x,nwy=nw.y; if(nwx==gx&&nwy==gy) { printf("YES\n"); return 0; } for(int k=0; k<4; k++) { _NODE to=(_NODE) { nwx+dx[k],nwy+dy[k] }; if(to.x<1||to.x>n&&to.y<1||to.y>m||vis[to.x][to.y]||(abs(mp[to.x][to.y]-mp[nwx][nwy])!=1&&mp[to.x][to.y]!=mp[nwx][nwy])) ; else { qe.push(to); vis[to.x][to.y]=true; } to=(_NODE) { to.x+dx[k],to.y+dy[k] }; if(to.x<1||to.x>n&&to.y<1||to.y>m||vis[to.x][to.y]||mp[to.x-dx[k]][to.y-dy[k]]>=mp[nwx][nwy]||mp[to.x][to.y]!=mp[nwx][nwy]) continue; qe.push(to); vis[to.x][to.y]=true; } } printf("NO\n"); return 0; }