1541 +1 *2 ²

来源:互联网 发布:js invoke 方法 编辑:程序博客网 时间:2024/06/16 01:37


#include <iostream>

#include <queue>
using namespace std;

queue<int> q1;

int m, n;
int used[10001] = {0};
int step[10001];

int bfs();
int moveto(int u, int dire);


int main()
{
 int num ;
 
 cin >> m >> n ;
 
 q1.push(m) ;
 used[m] = 1 ;
 step[m] = 0 ;

 
    num = bfs();
    cout << num << endl ;
}
int bfs()
{
 int u , v , i ;
 while (!q1.empty())
 {
   u = q1.front() ;
   q1.pop() ;
   for (i = 0 ; i < 3 ; i++)
   {
    v = moveto (u , i) ;
    
     if(v == n)
     {
      return (step[u] + 1) ;
     }
     if(v <= n && used[v] == 0)
     {
      q1.push(v);
      used[v] = 1 ;
      step[v] = step[u] + 1 ;
     }
    
   }
 }
}
int moveto(int u , int dire)
{

 if(dire == 0)
 {
     return (u + 1) ;
 }
 else if(dire == 1)
 {
  return (u * 2) ;
 }
 else if(dire == 2)
 {
  return (u * u);
 }
}