fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long n,m;
  5. bool visited[200005];
  6.  
  7. void bfs(long long n, long long m, bool visited[])
  8. {
  9. queue<long long> q;
  10.  
  11. q.push(n);
  12. visited[n] = true;
  13.  
  14. long long level = 0;
  15.  
  16. while (!q.empty())
  17. {
  18. long long sz = q.size();
  19. level++;
  20.  
  21. while (sz--)
  22. {
  23. long long t = q.front();
  24. q.pop();
  25.  
  26. long long t1 = t*2;
  27. long long t2 = t-1;
  28.  
  29. if (t1 == m || t2 == m)
  30. {
  31. cout << level;
  32. return;
  33. }
  34.  
  35. if (t1 >= 0 && t1 <= 100000 && !visited[t1])
  36. {
  37. visited[t1] = true;
  38. q.push(t1);
  39. }
  40.  
  41. if (t2 >= 0 && !visited[t2])
  42. {
  43. visited[t2] = true;
  44. q.push(t2);
  45. }
  46. }
  47. }
  48. }
  49.  
  50. void input()
  51. {
  52. cin >> n >> m;
  53. }
  54.  
  55. void solve()
  56. {
  57. if (n == m)
  58. {
  59. cout << 0;
  60. return;
  61. }
  62.  
  63. bfs(n, m, visited);
  64. }
  65.  
  66. int main()
  67. {
  68. ios_base::sync_with_stdio(0);
  69. cin.tie(0);
  70.  
  71. input();
  72. solve();
  73. }
  74.  
  75.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty