paste bin

malic
C++
#include <cstdio>
#include <queue>
#define MAXN 100003
using namespace std;

struct qNode
{
    int data;
    int level;
};

int main(void)
{
    bool visited[MAXN]={0};
    queue<qNode> q;
    qNode *p,*n1,*n2,*n3;
    int start,target;
    scanf("%d%d",&start,&target);
    if(start>=target)
    {
        printf("%d\n",start-target);
    }
    else
    {
        p=new qNode;
        n1=new qNode;
        n2=new qNode;
        n3=new qNode;
        p->data=start;
        p->level=0;
        visited[start]=true;
        q.push(*p);
        while(q.size()>0)
        {
            *p=q.front();
            q.pop();

            if(p->data==target)
            {
                printf("%d\n",p->level);
                break;
            }
            if( p->data+1<MAXN && visited[p->data+1]==false)
            {
                n1->data=p->data+1;
                visited[p->data+1]=true;
                n1->level=p->level+1;
                q.push(*n1);
            }
            if( p->data-1>=0 && visited[p->data-1]==false)
            {
                n2->data=p->data-1;
                visited[p->data-1]=true;
                n2->level=p->level+1;
                q.push(*n2);
            }
            if(p->data*2<MAXN && visited[p->data*2]==false)
            {
                n3->data=p->data*2;
                visited[p->data*2]=true;
                n3->level=p->level+1;
                q.push(*n3);
            }
        }
    }
    return 0;
}

2019 C1QD

fork this code