[백준/C++] 5014번 스타트링크

2021. 4. 1. 17:27알고리즘/BFS DFS

728x90
반응형

문제: www.acmicpc.net/problem/5014

 

5014번: 스타트링크

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

www.acmicpc.net

 

 

문제풀이

 

일차원 직선에서의 최단거리를 구하는 문제이다. BFS 알고리즘으로 문제를 풀었다.

 

 

코드

#include <iostream>
#include <queue>

using namespace std;

int dist[1000001];

int main(){
    ios::sync_with_stdio(false); cin.tie(NULL);

    int f,s,g,u,d;
    cin>>f>>s>>g>>u>>d;

    queue<int> q;
    q.push(s);
    dist[s] = 1;

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

        if(cur == g){
            cout<<dist[cur]-1;
            return 0;
        }

        int nu = cur + u;
        if(nu<=f && dist[nu] == 0){
            q.push(nu);
            dist[nu] = dist[cur] + 1;
        }

        int nd = cur - d;
        if(nd>=1  && dist[nd] == 0){
            q.push(nd);
            dist[nd] = dist[cur] + 1;
        }
    }

    cout<<"use the stairs";

    return 0;
}

 

 

결과

 

 

 

728x90
반응형

'알고리즘 > BFS DFS' 카테고리의 다른 글

[백준/C++] 6593번 상범 빌딩  (0) 2021.04.02
[백준/C++] 13549번 숨바꼭질 3  (0) 2021.04.02
[백준/C++] 2573번 빙산  (0) 2021.03.31
[백준/C++] 5427번 불  (0) 2021.03.31
[백준/C++] 10026번 적록색약  (0) 2021.03.30