听取WA声一片
查看原帖
听取WA声一片
1005576
yinxiangbo2030楼主2023/10/8 16:22
#include<bits/stdc++.h>
using namespace std;
long long n;
bool vis[1000005];
struct cat{long long idx,stp;}f;
queue<cat>q;
int main(){
	//freopen("1.in","r",stdin);
	cin>>n;
	vis[1]=1;
	f.idx=1;
	f.stp=0;
	q.push(f);
	while(!q.empty()){
		cat now=q.front();
		q.pop();
		if(now.idx==n){
			cout<<now.stp;
			return 0;
		}
		for(int i=0;i<3;i++){
			if(i==0){
				if(((now.idx-1)<1)||vis[now.idx-1])continue;
				vis[now.idx-1]=1;
				now.idx--;
				now.stp++;
				q.push(now);
			}
			if(i==1){
				if(((now.idx+1)>n)||vis[now.idx+1])continue;
				vis[now.idx+1]=1;
				now.idx++;
				now.stp++;
				q.push(now);
			}
			if(i==2){
				if(((2*now.idx)>n)||vis[now.idx*2])continue;
				vis[now.idx*2]=1;
				now.idx*=2;
				now.stp++;
				q.push(now);
			}
		}
	}
	return 0;
}
2023/10/8 16:22
加载中...