BFS0分求助
查看原帖
BFS0分求助
715774
Little_Andyyu楼主2023/9/25 14:20
#include<bits/stdc++.h>
using namespace std;
int h[1000001][3];
int n,k,x,a;
bool v[1000001]; 
int main()
{
	cin>>a;
	for(int i=0;i<=a-1;i++){
		cin>>n>>k;
		//memset(h,0,sizeof(h));
		h[1][1]=n;
		v[n]=1;
		int hd=0,t=1;
		do{
			hd++;
			for(int i=1;i<=3;i++){
				x=h[hd][1];
				if(i==1)x++;
				if(i==2)x--;
				if(i==3)x*=2;
				if(x>=0&&x<=100000)
				{
					if(!v[x]||h[x][2]>h[h[hd][1]][2]+1)
					{
						t++;
						h[t][1]=x;
						v[x]=1;
						h[x][2]=h[h[hd][1]][2]+1; 
					}
				}
			}
		}while(hd<t);
		cout<<h[k][2]<<endl;
	}
	return 0;
}
2023/9/25 14:20
加载中...