#include <bits/stdc++.h>
using namespace std;
int visit[200000];
struct node
{
int data,step;
}s,b[200000];
int n,m;
void BFS()
{
int in,out;
in=0,out=0;
visit[n]=1;
b[in].data=n;
b[in].step=0;
in++;
while(in>out)//類似樹的層次遍歷
{
s=b[out];
out++;
if(s.data==m)
{
printf("%d\n",s.step);
break;
}
if(s.data+1<=m&&visit[s.data+1]==0)
{
b[in].data=s.data+1;
b[in].step=s.step+1;
in++;
visit[s.data+1]=1;
}
if(s.data*2<=m&&visit[s.data*2]==0)
{
b[in].data=s.data*2;
b[in].step=s.step+1;
in++;
visit[s.data*2]=1;
}
if(s.data-1>=0&&visit[s.data-1]==0)
{
b[in].data=s.data-1;
b[in].step=s.step+1;
in++;
visit[s.data-1]=1;
}
}
}
int main()
{
while(~scanf("%d%d",&n,&m))
{
memset(visit,0,sizeof(visit));
BFS();
}
return 0;
}
Catch That Cow
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.