paysmile 2019. 1. 14. 01:30

#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;

}