代码如下
#include<bits/stdc++.h>
#define MAXN_ 100010
using namespace std;
int t;
inline int Bfs(int x,int y)
{
queue<int> Q;
bool F[MAXN_];
int Step[MAXN_];
memset(F,0,sizeof(F));
memset(Step,0,sizeof(Step));
Q.push(x),F[x]=true,Step[x]=0;
while(!Q.empty())
{
int tempLocation=Q.front();
Q.pop();
for(int i=1;i<=3;i++)
{
int tempLocationc=tempLocation;
if(i==1) tempLocationc+=1;
if(i==2) tempLocationc-=1;
if(i==3) tempLocationc*=2;
if(!F[tempLocationc]&&tempLocationc>0&&tempLocationc<=MAXN_-10)
{
Q.push(tempLocationc);
F[tempLocationc]=true;
Step[tempLocationc]=Step[tempLocation]+1;
}
}
}
return Step[y];
}
int main()
{
//freopen("a.in","r",stdin);
scanf("%d",&t);
int cx,cy;
while(t--)
{
scanf("%d %d",&cx,&cy);
printf("%d\n",Bfs(cx,cy));
}
return 0;
}
/*
n>=0
n==y
f[n]=f[n-1]+1;
f[n]=f[n-1]-1;
f[n]=f[n-1]*2;
*/