Search
Duplicate

스타트링크

주차
0
문제번호
5014
언어
C++
티어
골드
유형
그래프
BFS
nj_Blog
nj_상태
완료
이해도
풀이
사람
이해도 2
13 more properties

Memo

문제에서 층이 일차원 배열로 표현이 가능하기 때문에 pair 하나 만으로 층과 누른 횟수로 표현이 가능했습니다.

Code

제출 날짜

@3/25/2021

메모리

2992 KB

시간

12 ms
#include <iostream> #include <queue> #define endl "\n" int F,S,G,U,D; std::string cant_go; int ans; std::queue<std::pair<int, int> > q; // current floor, cnt bool visited[1000001]; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void input() { input_faster(); std::cin >> F >> S >> G >> U >> D; cant_go = "use the stairs"; ans = 0; } bool bfs() { q = std::queue<std::pair<int, int> >(); q.push({S, 0}); int current_f, dist, q_u, q_d; while (!q.empty()) { current_f = q.front().first; dist = q.front().second; q.pop(); if (current_f == G) { ans = dist; return (1); } q_u = current_f + U; q_d = current_f - D; if (q_u >= 1 && q_u <= F && !visited[q_u]) { visited[q_u] = 1; q.push({q_u, dist + 1}); } if (q_d >= 1 && q_d <= F && !visited[q_d]) { visited[q_d] = 1; q.push({q_d, dist + 1}); } } return (0); } void solve() { if(!bfs()) std::cout << cant_go; else std::cout << ans; } int main() { input(); solve(); return (0); }
C++
복사