728x90
반응형
https://www.acmicpc.net/problem/1697
#include <bits/stdc++.h>
using namespace std;
const int MAX = 100001;
int n, k;
bool visited[MAX];
int path[MAX];
queue<int> q;
void bfs(int v){
path[v] = 0;
visited[v] = true;
q.push(v);
while(!q.empty()){
int w = q.front();
if(w==k) break;
q.pop();
if(visited[w+1]==0 && w+1>=0 && w+1<MAX){
visited[w+1] =true;
q.push(w+1);
path[w+1] = path[w]+1;
}
if(visited[w-1]==0 && w-1>=0 && w-1<MAX){
visited[w-1] = true;
q.push(w-1);
path[w-1] = path[w]+1;
}
if(visited[w*2]==0 && w*2>=0 && w*2<MAX){
visited[w*2] = true;
q.push(w*2);
path[w*2] = path[w]+1;
}
}
}
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> k;
bfs(n);
cout << path[k];
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
[백준/재귀/C++] 2003번 수들의합2 (0) | 2023.01.11 |
---|---|
[백준/BFS/C++] 5014번 스타트링크 (0) | 2023.01.11 |
[백준/백트래킹/C++] 10971번 외판원 순회2 * (0) | 2023.01.10 |
[백준/백트래킹/C++] 6603번 로또 (0) | 2023.01.09 |
[백준/백트래킹/C++] 15652번 N과 M (4) (0) | 2023.01.08 |