-
[백준/BOJ] 5014번 스타트링크 (C++)알고리즘 문제풀이/백준 2021. 10. 28. 17:26
https://www.acmicpc.net/problem/5014
1697번 숨바꼭질 문제와 비슷한 BFS 문제였다. 그래서 어렵지 않게 해결 ㅎ (범위 처리만 잘 해주자)
#include <iostream> #include <queue> #include <cstring> #include <algorithm> using namespace std; int F, S, G, U, D; int visit[1000001]; int BFS() { queue<int> q; q.push(S); visit[S] = 0; while(!q.empty()) { int now = q.front(); q.pop(); if(now == G) return visit[now]; if(now + U <= F && visit[now + U] == -1) { q.push(now + U); visit[now + U] = visit[now] + 1; } if(now - D >= 1 && visit[now - D] == -1) { q.push(now - D); visit[now - D] = visit[now] + 1; } } return -1; } int main(void) { //freopen("input.txt", "rt", stdin); ios_base::sync_with_stdio(false); cin.tie(0); cin >> F >> S >> G >> U >> D; memset(visit, -1, sizeof(visit)); int answer = BFS(); if(answer == -1) cout << "use the stairs"; else cout << answer; }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 2573번 빙산 (C++) (0) 2021.11.02 [백준/BOJ] 2206번 벽 부수고 이동하기 (C++) (0) 2021.10.29 [백준/BOJ] 1543번 문서 검색 (C++) (0) 2021.10.27 [백준/BOJ] 2146번 다리 만들기 (C++) (0) 2021.10.26 [백준/BOJ] 2468번 안전 영역 (C++) (0) 2021.10.13