0分求助
查看原帖
0分求助
1101352
kungeruyi楼主2024/12/11 20:24

不知道怎么回事,怎么调都是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;
}

2024/12/11 20:24
加载中...