#include <stdio.h>
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
int start, arrive;
int visited[100010];
queue<int> q;
void BFS()
{
visited[start] = 1;
q.push(start);
while(!q.empty())
{
int x = q.front();
q.pop();
for(int i = 1; i <= 3; i++)
{
int xpos;
if(i == 1)
{
xpos = x - 1;
}
else if(i == 2)
{
xpos = x + 1;
}
else if(i == 3)
{
xpos = x * 2;
}
if(xpos >= 0 && xpos <= 100000 && visited[xpos] == 0)
{
visited[xpos] = visited[x] + 1;
q.push(xpos);
}
if(xpos == arrive)
{
return;
}
}
}
}
int main(void)
{
// freopen("B1697_input.txt", "r", stdin);
cin >> start >> arrive;
BFS();
cout << visited[arrive]-1;
return 0;
}
|
cs |
'Baekjoon > BFS' 카테고리의 다른 글
[백준 2468] 안전영역 (BFS) (C/C++) (0) | 2019.12.04 |
---|---|
[백준 9177] 단어 섞기 (DFS/BFS) (C/C++) (★★) (0) | 2019.12.04 |
[백준 7562] 나이트의 이동 (BFS) (C/C++) (0) | 2019.12.03 |
[백준 2251] 물통 (BFS) (C/C++) (0) | 2019.12.02 |
[백준 5014] 스타트 링크 (BFS) (C/C++) (0) | 2019.12.02 |