1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| #include <cstdio> #include <queue>
using namespace std;
int n,k; bool vis[100010]; struct p{ int sum ; int x; }; queue<p>q;
bool check(p pp){ if(pp.x >= 0 && pp.x <= 100000 && vis[pp.x] == 0){ return 1; } else{ return 0; } }
void bfs(){ while(!q.empty()){ p pp = q.front(); q.pop(); p pz;
if(pp.x == k){ printf("%d\n",pp.sum); return; }
pz.x = pp.x * 2; pz.sum = pp.sum + 1; if(check(pz) == 1){ vis[pz.x] = 1; q.push(pz); }
pz.x = pp.x + 1; pz.sum = pp.sum + 1; if(check(pz) == 1){ vis[pz.x] = 1; q.push(pz); }
pz.x = pp.x - 1; pz.sum = pp.sum + 1; if(check(pz) == 1){ vis[pz.x] = 1; q.push(pz); } } return ; }
int main(){ scanf("%d %d",&n,&k);
p pp; pp.x = n; pp.sum = 0; q.push(pp); bfs();
return 0; }
|
Author:
Qin Peng
License:
Copyright (c) 2020 BY QPWLKQ LICENSE
Slogan:
每一个不曾起舞的日子, 都是对生命的辜负