#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int maxn=300000;
struct node{
int x;
int step;
};
node a,b;
int jx,nx;
int bfs(){
int vis[maxn];
memset(vis,0,sizeof(vis));
queue<node>q;
a.x=jx;
vis[a.x]=1;
a.step=0;
q.push(a);
while(!q.empty()){
a=q.front();
q.pop();
if(a.x==nx){
return a.step;
}
for(int i=0;i<3;i++){
b=a;
if(i==0){
b.x=a.x+1;
}else if(i==1){
b.x=a.x-1;
}else if(i==2){
b.x=a.x*2;
}
b.step++;
if(b.x==nx){
return b.step;
}
if(!vis[b.x]&&b.x>=0&&b.x<=200000){
vis[b.x]=1;
q.push(b);
}
}
}
}
int main(){
cin>>jx>>nx;
cout<<bfs()<<endl;
}
简单搜索C-C不知道怎么回事代码总超时
猜你喜欢
转载自blog.csdn.net/Helloirbd/article/details/82145914
今日推荐
周排行