不知道怎么回事,怎么调都是0分
代码如下:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int size=1e7+10;
int T,x,y;
struct node{
int x,step;
}q[size];
int f[N];
int head,tail;
int bfs(){
head=0,tail=1;
while(head<=tail){
head++;
int nx=q[head].x;
int step=q[head].step;
if(nx==y){
return step;
}
if(nx+1<=100000 && !f[nx+1]){
f[nx+1]=1;
tail++;
q[tail].x=nx+1;
q[tail].step=step+1;
}
if(nx-1>=1 && !f[nx-1]){
f[nx-1]=1;
tail++;
q[tail].x=nx-1;
q[tail].step=step+1;
}
if(nx*2<=100000 && !f[nx*2]){
f[nx*2]=1;
tail++;
q[tail].x=nx*2;
q[tail].step=step+1;
}
}
return q[tail].step;
}
int main()
{
cin>>T;
while(T--){
memset(f,0,sizeof(int));
cin>>x>>y;
for(int i=1;i<=size;i++){
q[i].x=0;
q[i].step=0;
}
q[1].x=x;
q[1].step=0;
cout<<bfs()<<'\n';
}
return 0;
}
