Why RE 10pts
查看原帖
Why RE 10pts
1115541
dong0717楼主2024/8/14 13:23
#include<bits/stdc++.h>
using namespace std;
int n,q[10000005],a[1000005];
int BFS(){
	int tail=1,head=0;
    a[1]=0;
	while(head<tail){
		int t=q[head++];
		if(t==n) return a[n]-1;
		for(int i=0;i<3;i++){
			int nt;
			if(i==0&&t+1<=n) nt=t+1;
			if(i==1&&t-1>0) nt=t-1;
			if(i==2&&t*2<=n) nt=t*2;
	        q[tail++]=nt;
	        if(a[nt]>a[t]+1) a[nt]=a[t]+1;
			if(a[nt]==0) a[nt]=a[t]+1; 
		}
	}
}
int main(){
    scanf("%d",&n);
    printf("%d",BFS());
    return 0;
}

10分,为何

2024/8/14 13:23
加载中...