作者:
笙笙笙笙
,
2022-09-23 10:15:36
,
所有人可见
,
阅读 28
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
const int N = 100010;
int n,m;
int d[N];
void bfs(){
queue<int> q;
q.push(n);
while(q.size()){
int t = q.front();
q.pop();
if(t == m) return;
for(int i = 1 ; i <= 3 ; i++){
int a = 0;
if(i == 1) a = t + 1;
else if(i == 2) a = t - 1;
else if(i == 3) a = t * 2;
if(a < 0 || a > N || d[a]) continue;
d[a] = d[t] + 1;
q.push(a);
}
}
}
int main()
{
cin >> n >> m;
bfs();
cout << d[m] << endl;
}