Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Space-Time Sugoroku Road"
https://onlinejudge.u-aizu.ac.jp/problems/2332
・時空のスゴロク・ロード
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume23 : 2332 - Space-Time Sugoroku Road
/* Aizu Online Judge in C++ #Volume23 : 2332 - Space-Time Sugoroku Road https://onlinejudge.u-aizu.ac.jp/problems/2332 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; ll n,p[200010],d[200010]; int main(void){ cin>>n; for(ll i=0;i<n;i++){ cin>>p[i]; d[i]=(i==0 ? 0 : -1); } queue<ll> q; q.push(0); while(q.size()){ ll num=q.front(); q.pop(); for(ll i=1;i<=6;i++){ ll j=num+i; while(d[j]<0){ d[j]=d[num]+1; if(p[j]){ j+=p[j]; }else{ q.push(j); } } } } cout<<d[n-1]<<endl; return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/