반응형

문제 링크 : 5014번: 스타트링크 (acmicpc.net)

 

5014번: 스타트링크

첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다.

www.acmicpc.net

> 풀이 

BFS를 사용해서 풀자

#include <bits/stdc++.h>
using namespace std;

int F, S, G, U, D, res = INT_MAX;
int path[1000001];
bool visited[1000001];
queue<int> q;

int main(void) {
        scanf("%d %d %d %d %d", &F, &S, &G, &U, &D);
        int move[2] = {U, -1 * D};
        q.push(S);
        visited[S] = true;

        while (!q.empty()) {
                int n = q.front();
                q.pop();

                for (int i = 0; i < 2; i++) {
                        int nn = n + move[i];

                        if (nn >= 1 && nn <= F && !visited[nn]) {
                                q.push(nn);
                                visited[nn] = true;
                                path[nn] = path[n] + 1;
                        }
                }
        }

        if (visited[G]) printf("%d", path[G]);
        else printf("use the stairs");

        return 0;
}
반응형

'알고리즘 (백준)' 카테고리의 다른 글

백준 2644 (촌수계산) / C++  (0) 2020.11.06

+ Recent posts