30分,代码:
#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
int n;
int x,y;
int a[1000010];
queue<int>q;
int bfs(int x1,int y1){
q.push(x);
while(!q.empty()){
auto t=q.front();
q.pop();
for(int i=1;i<=3;i++){
int x2;
if(i==1){
x2=t+1;
}
if(i==2){
x2=t-1;
}
if(i==3){
x2=2*t;
}
if(x2<=0||x2>y) continue;
if(a[x2]>=0) continue;
a[x2]=a[t]+1;
if(x2==y){
return a[x2];
}
q.push(x2);
}
}
}
int main() {
cin>>n;
while(n--){
memset(a,-1,sizeof a);
while(!q.empty()) q.pop();
cin>>x>>y;
a[x]=0;
cout<<bfs(x,y)<<endl;
}
return 0;
}