广搜深搜都可以
用广搜
#include <cstdio>//poj oj不能用万能头文件
#include<string>
#include<queue>
using namespace std;
bool p[100000 + 10];
struct R{
int w, g;
R (int w, int g) :w(w), g(g){}
};
int n, k;
int dfs()
{
queue<R> q;
q.push(R(n,0));
p[n] = 1;
while (!q.empty()){
R t = q.front(); q.pop();
int f = t.w, g = t.g;
if (f == k) return g;
if (f - 1 >= 0 && !p[f - 1]) {
q.push(R(f - 1, g + 1));
p[f-1] = 1; //一定先做标记 不然一定超时
}
if (f + 1 <= 100000 && !p[f + 1]){
q.push(R(f + 1, g + 1));
p[f+1] = 1;
}
if (f * 2 <= 100000 && !p[f * 2]) {
q.push(R(f * 2, g + 1));
p[f*2] = 1;
}
}
}
int main()
{
memset(p, 0, sizeof(p));
scanf("%d %d", &n, &k);
printf("%d\n", dfs());
return 0;
}