#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int f, s, g, u, d;
int visited[1000001];
int bfs(int s) {
queue<int> q;
q.push(s);
visited[s] = 1;
while (!q.empty()) {
int x = q.front();
q.pop();
if (x == g)
return visited[x]-1;
int movestairs[2] = { x + u, x - d };
for (int k = 0; k < 2; k++) {
int ma = movestairs[k];
if (ma >= 1 && ma <= f){
if (visited[ma] ==0 ) {
q.push(ma);
visited[ma] = visited[x] + 1;
}
}
}
}
return -1;
}
int main(void) {
cin >> f >> s >> g >> u >> d;
memset(visited, 0, sizeof(visited));
int ans = bfs(s);
if (ans == -1)
cout << "use the stairs";
else
cout << ans;
}
'백준 알고리즘 > 다이나믹 프로그래밍' 카테고리의 다른 글
백준 2156번 C++ (0) | 2019.01.15 |
---|---|
백준 11726번 C++ (0) | 2019.01.15 |
백준 2193번 C++ (0) | 2019.01.14 |
백준 2579번 C++ (0) | 2019.01.14 |
백준 9095번 C++ (0) | 2019.01.14 |