#include <iostream>
#include <queue>
#include<algorithm>
using namespace std;
queue<pair<int, int>> q;
bool visited[100001];
int result;
bool valid(int n) {
if (n < 0 || n > 100000 || visited[n])
return false;
return true;
}
int BFS(int end)
{
while (!q.empty())
{
int r = q.front().first;
int l = q.front().second;
q.pop();
if (r == end)
return l;
if (valid(r*2))
{
visited[r * 2] = true;
q.push(make_pair(r*2, l + 1));
}
if (valid(r +1))
{
visited[r + 1] = true;
q.push(make_pair(r+1, l + 1));
}
if (valid(r-1))
{
visited[r- 1] = true;
q.push(make_pair(r -1, l + 1));
}
}
}
int main()
{
int start, end;
scanf("%d %d", &start, &end);
q.push( make_pair(start, 0));
visited[start] = true;
printf("%d", BFS(end));
return 0;
}
728x90
'코테 > 백준 문제풀이' 카테고리의 다른 글
백준 3055 탈출 (1) | 2021.08.24 |
---|---|
백준 1987 알파벳 (0) | 2021.08.16 |
백준 4358 생태학 (0) | 2021.08.09 |
백준 2002 추월 (0) | 2021.08.04 |
백준 9934 완전이진트리 (0) | 2021.08.03 |