[백준/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 |