Catch That Cow

来源:互联网 发布:淘宝处罚考试答案题库 编辑:程序博客网 时间:2024/06/09 15:53

Description

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

* Walking: FJ can move from any point X to the points - 1 or + 1 in a single minute
* Teleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farm

#include<stdio.h>#include<queue>#include<iostream>#include<cstring>using namespace std;queue<int> q;int a,b;bool visit[100010];int step[100010];bool bound(int x){   if(x<0||x>100000)        return 1;        return 0;}int bfs(int m,int n){    queue<int> q;    int t,temp;    q.push(m);    visit[m]=1;    while(!q.empty())    {        t=q.front();        q.pop();        for(int i=0;i<3;i++)        {        if(i==0)            temp=t+1;            if(i==1)                temp=t-1;            if(i==2)                temp=t*2;            if(bound(temp))//越界                continue;            if(visit[temp]==0)            {                step[temp]=step[t]+1;                if(temp==n)                return step[temp];                visit[temp]=1;                q.push(temp);            }        }    }}int main(){    while(scanf("%d%d",&a,&b)!=EOF)    {        memset(visit,0,sizeof(visit));        memset(step,0,sizeof(step));       if(a>=b)        printf("%d\n",a-b);       else        printf("%d\n",bfs(a,b));    }}

er John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4
0 0
原创粉丝点击