728x90
https://www.acmicpc.net/problem/16928
다익스트라, 그래프 등 많은 것을 고민했지만 그냥 bfs 풀이가 가장 쉬운 풀이이다.
#include <iostream>
#include <queue>
#include <map>
using namespace std;
map<int, int> jump;
bool visited[101] = { false, };
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N, M;
cin >> N >> M;
for (int i = 1; i <= 100; i++) {
jump.insert({ i, -1 });
}
for (int i = 0; i < N + M; i++) {
int a, b;
cin >> a >> b;
jump[a] = b;
}
queue<pair<int, int>> q;
q.push({ 1, 0 });
int answer = 0;
while (!q.empty()) {
int cnt = q.front().second;
int idx = q.front().first;
q.pop();
//cout << idx << endl;
if (idx == 100) {
answer = cnt;
break;
}
for (int i = 1; i <= 6; i++) {
int next = idx + i;
if (visited[next] == false) {
if (jump[next] == -1) {
q.push({ next, cnt + 1 });
visited[next] = true;
}
else {
q.push({ jump[next], cnt + 1 });
visited[next] = true;
visited[jump[next]] = true;
}
}
}
}
cout << answer << '\n';
}
'백준 문제 풀이' 카테고리의 다른 글
백준 12893번 - 적의 적(C++) (1) | 2024.01.29 |
---|---|
백준 1786번 - 찾기(C++) (1) | 2024.01.26 |
백준 1967번 - 트리의 지름 (0) | 2024.01.17 |
백준 9466번 - 텀 프로젝트 (C++) (0) | 2024.01.16 |
백준 1520번 - 내리막 길 (0) | 2024.01.10 |