結果
問題 | No.367 ナイトの転身 |
ユーザー | sekiya9311 |
提出日時 | 2016-04-30 01:36:53 |
言語 | C++14 (gcc 12.3.0 + boost 1.83.0) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,486 bytes |
コンパイル時間 | 1,369 ms |
コンパイル使用メモリ | 111,744 KB |
実行使用メモリ | 814,816 KB |
最終ジャッジ日時 | 2024-10-04 23:48:59 |
合計ジャッジ時間 | 4,809 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,820 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,824 KB |
testcase_03 | AC | 2 ms
6,816 KB |
testcase_04 | AC | 2 ms
6,816 KB |
testcase_05 | AC | 2 ms
6,816 KB |
testcase_06 | AC | 3 ms
6,820 KB |
testcase_07 | AC | 2 ms
6,820 KB |
testcase_08 | AC | 2 ms
6,820 KB |
testcase_09 | AC | 2 ms
6,816 KB |
testcase_10 | AC | 60 ms
17,664 KB |
testcase_11 | MLE | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
コンパイルメッセージ
main.cpp: In function 'int main()': main.cpp:80:22: warning: 'gw' may be used uninitialized [-Wmaybe-uninitialized] 80 | if(map[gh][gw][0] || map[gh][gw][1]) break; | ^ main.cpp:40:18: note: 'gw' was declared here 40 | int sh,sw,gh,gw; | ^~ main.cpp:80:18: warning: 'gh' may be used uninitialized [-Wmaybe-uninitialized] 80 | if(map[gh][gw][0] || map[gh][gw][1]) break; | ^ main.cpp:40:15: note: 'gh' was declared here 40 | int sh,sw,gh,gw; | ^~
ソースコード
#include <iostream> #include <string> #include <queue> #include <stack> #include <algorithm> #include <list> #include <vector> #include <utility> #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <cassert> #include <cstddef> #include <numeric> #define REP(i,n) for(int (i)=0;(i)<(n);(i)++) #define FOR(i,a,b) for(int (i)=(a);(i)<(b);(i)++) #define RREP(i,a) for(int (i)=(a)-1;(i)>=0;(i)--) #define FORR(i,a,b) for(int (i)=(a)-1;(i)>=(b);(i)--) typedef long long LL; typedef unsigned long long ULL; using namespace std; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; int kh[8] = {1,2,-1,-2,1,2,-1,-2}; int kw[8] = {2,1,-2,-1,-2,-1,2,1}; int bh[4] = {1, -1, -1, 1}; int bw[4] = {1, 1, -1, -1}; int main(){ int H,W; cin>>H>>W; //y=h,x=w int sh,sw,gh,gw; vector<string> s(H); REP(i,H){ cin>>s[i]; if(s[i].find("S")!=-1){ sh=i; sw=s[i].find("S"); } if(s[i].find("G")!=-1){ gh=i; gw=s[i].find("G"); } } //long map[H][W][2]; 最後1ならナイト 0ならミニビショップ vector<vector<vector<long>>> map(H,vector<vector<long>>(W,vector<long>(2,0))); queue<int> h; queue<int> w; queue<bool> flag; h.push(sh); w.push(sw); flag.push(true); while(!h.empty()){ int hh,ww; bool f; hh=h.front(); ww=w.front(); f=flag.front(); h.pop(); w.pop(); flag.pop(); if(f){ REP(i,8){ int mh=hh+kh[i],mw=ww+kw[i],d=1; if(mh<0 || mw<0 || mh>=H || mw>=W) continue; if(map[mh][mw][d]&&s[mh][mw]!='R') continue; if(s[mh][mw]=='R') {flag.push(false); d=0;} else flag.push(true); map[mh][mw][d]=map[hh][ww][1]+1; h.push(mh); w.push(mw); } }else{ REP(i,4){ int mh=hh+bh[i],mw=ww+bw[i],d=0; if(mh<0 || mw<0 || mh>=H || mw>=W) continue; if(map[mh][mw][d]&&s[mh][mw]!='R') continue; if(s[mh][mw]=='R') {flag.push(true); d=1;} else flag.push(false); map[mh][mw][d]=map[hh][ww][0]+1; h.push(mh); w.push(mw); } } if(map[gh][gw][0] || map[gh][gw][1]) break; } if(!map[gh][gw][0] && !map[gh][gw][1]) cout<<-1<<endl; else cout<<max(map[gh][gw][0],map[gh][gw][1])<<endl; }