문제) 백준 - BFS - 스타트링크
https://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를 통해서 G층까지 최소 버튼 횟수를 구한다. 핵심은 Queue에 방문 층과 버튼 횟수를 함께 넣는 것.
C++ 소스코드)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int bfs() { | |
memset(visited, false, sizeof(visited)); | |
queue<p> q; | |
q.push({ S, 0 }); | |
visited[S] = true; | |
while (!q.empty()) { | |
int now = q.front().first; | |
int cnt = q.front().second; | |
q.pop(); | |
if (now == G) return cnt; | |
if (now + U <= F && !visited[now + U]) { | |
q.push({ now + U, cnt + 1 }); | |
visited[now + U] = true; | |
} | |
if (now - D >= 1 && !visited[now - D]) { | |
q.push({ now - D, cnt + 1 }); | |
visited[now - D] = true; | |
} | |
} | |
return -1; | |
} |
Full Code)
GitHub - Chocochip101/BOJ_Solution
Contribute to Chocochip101/BOJ_Solution development by creating an account on GitHub.
github.com
반응형
'PS(Problem Solving) > 백준_BOJ' 카테고리의 다른 글
[백준] 5397번 - 키로거 (C++) 문제 및 풀이 (0) | 2021.11.13 |
---|---|
[백준] 15990번 - 1, 2, 3 더하기 5 (C++) 문제 및 풀이 (0) | 2021.11.13 |
[백준] 9372번 - 상근이의 여행 (C++) 문제 및 풀이 (0) | 2021.11.07 |
[백준] 7579번 - 앱 (C++) 문제 및 풀이 (0) | 2021.11.07 |
[백준] 12852번 - 1로 만들기 2 (C++) 문제 및 풀이 (0) | 2021.11.06 |
댓글