반응형
난이도: Silver 2
번호: 1697
생성일: March 4, 2023 7:53 PM
알고리즘 분류: 그래프 이론, 그래프 탐색, 너비 우선 탐색
언어: C++
C++
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int mini = 0xFFFFFFF;
int N, K;
bool visited[100001];
void BFS()
{
queue<pair<int, int>> Q;
Q.push({N, 0});
visited[N] = true;
while (!Q.empty())
{
int cur = Q.front().first;
int cnt = Q.front().second;
Q.pop();
if (cur == K)
{
mini = cnt;
return;
}
if (cur * 2 <= K && !visited[cur * 2])
{
Q.push({cur * 2, cnt + 1});
visited[cur * 2] = true;
}
if (cur + 1 <= K && !visited[cur + 1])
{
Q.push({cur + 1, cnt + 1});
visited[cur + 1] = true;
}
if (cur - 1 >= 0 && !visited[cur - 1])
{
Q.push({cur - 1, cnt + 1});
visited[cur - 1] = true;
}
}
}
int main()
{
cin >> N >> K;
BFS();
if (mini == 0xFFFFFFF)
cout << -1;
else
cout << mini;
}
반응형
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ 24447] 알고리즘 수업 - 너비 우선 탐색 4 C++ (0) | 2023.03.04 |
---|---|
[BOJ 25416] 빠른 숫자 탐색 C++ (0) | 2023.03.04 |
[BOJ 17086] 아기 상어 2 C++ (0) | 2023.03.03 |
[BOJ 1806] 부분합 C++ (0) | 2023.03.03 |
[BOJ 4195] 친구 네트워크 C++ (0) | 2023.03.02 |