본문 바로가기
백준 알고리즘/다이나믹 프로그래밍

백준 5014번 C++

by paysmile 2019. 1. 14.

#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