1
已解决
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int n, k;
bool flag[100005];
struct st{
int t, x;
}cur;
queue<st>q;
int main(){
cin>>n>>k;
if(k<n){
cout<<n-k<<endl;
return 0;
}
q.push((st){0, n});
while(1){
cur=q.front();
q.pop();
flag[cur.x]=true;
if(cur.x==k){
cout<<cur.t<<endl;
return 0;
}
if(cur.x*2<=100000&&!flag[cur.x*2]){
q.push((st){cur.t+1,cur.x*2});
}
if(cur.x+1<=100000&&!flag[cur.x+1]){
q.push((st){cur.t+1,cur.x+1});
}
if(cur.x-1>=0&&!flag[cur.x-1]){
q.push((st){cur.t+1,cur.x-1});
}
}
return 0;
}
0
0
0
0