728x90
반응형
https://www.acmicpc.net/problem/5014
유의할 점
엘레베이터로 이동가능한지 여부를 판단할 때 visited[] 를 이용한다
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000001;
int f, s, g, u, d;
bool visited[MAX];
int path[MAX];
int result = 2e9;
queue<int> q;
void bfs(int v){
visited[v] = true;
q.push(v);
path[v] = 0;
while(!q.empty()){
int x = q.front();
if(x==g) break;
q.pop();
if(x+u>0 && x+u<=f && !visited[x+u]){
visited[x+u] = true;
q.push(x+u);
path[x+u] = path[x] + 1;
}
if(x-d>0 && x-d<=f && !visited[x-d]){
visited[x-d] = true;
q.push(x-d);
path[x-d] = path[x] + 1;
}
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
// f:전체 층, s:현재 층, g: 목표 층
cin >> f >> s >> g >> u >> d;
bfs(s);
if(visited[g]) cout << path[g];
else cout << "use the stairs";
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[이코테/그리디/C++] 거스름 돈 (0) | 2023.01.11 |
---|---|
[백준/재귀/C++] 2003번 수들의합2 (0) | 2023.01.11 |
[백준/BFS/C++] 1697번 숨바꼭질 * (0) | 2023.01.10 |
[백준/백트래킹/C++] 10971번 외판원 순회2 * (0) | 2023.01.10 |
[백준/백트래킹/C++] 6603번 로또 (0) | 2023.01.09 |