728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/1697
1. 풀이 |
2. 소스코드 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include<iostream> #include<cstring> #include<queue> using namespace std; deque<pair<int, int> > V; bool visited[200001]; int N, K; int bfs() { while (!V.empty()) { pair<int, int> here = V.front(); V.pop_front(); if (here.first == K) return here.second; if (here.first * 2 <= K * 2 && !visited[here.first * 2]) { V.push_back({ here.first * 2, here.second + 1 }); visited[here.first * 2] = true; } if (here.first + 1 <= K * 2 && !visited[here.first + 1]) { V.push_back({ here.first + 1, here.second + 1 }); visited[here.first + 1] = true; } if (here.first > 0 && !visited[here.first - 1]) { V.push_back({ here.first - 1, here.second + 1 }); visited[here.first - 1] = true; } } } int main() { cin >> N >> K; memset(visited, false, sizeof(visited)); V.push_back({ N,0 }); cout << bfs() << endl; } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > DFS와 BFS' 카테고리의 다른 글
[c++] 백준 13460 - 구슬 탈출 2 (0) | 2023.10.09 |
---|---|
[C++] 백준 2206 - 벽 부수고 이동하기(BFS) (0) | 2020.03.03 |
[C++] 백준 1012 - 유기농 배추(DFS) (0) | 2020.03.03 |