#include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef pair P; class Edge { public: int cost; int from; int to; Edge(int n,int c) { to=n; cost=c; } Edge(int f,int t,int c) { from=f; to=t; cost=c; } }; vector g[10001]; priority_queue,greater

> que; bool used[10001]; int dist[10001]; int main() { int n; int ans; cin>>n; //それぞれのマスから到達できるマスに辺を張る for(int i=1;i0) cnt++; } if(i-cnt>0) g[i].push_back(Edge(i-cnt,1)); if(i+cntdist[v]+e.cost) { dist[e.to]=dist[v]+e.cost; que.push(P(dist[e.to],e.to)); } } } //ここまでダイクストラ if(dist[n]==(int)1e9-1) ans=-1; else ans=dist[n]+1; cout<