河南多校暑期集训-Catch That Cow(广搜)

来源:互联网 发布:intouch10.5软件下载 编辑:程序博客网 时间:2024/05/03 07:25
G - Catch That Cow
Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu
Submit Status

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 Farmer 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

H

#include<stdio.h>#include<string.h>#include<stdlib.h>#include<limits.h>#include<queue>#include<algorithm>using namespace std;int n,m,k;int flag[100005];struct node{int x,step;}str,a;int  find(int x){if(x<0 || x>100000 || flag[x])return 0;return 1;}int  main(){int i,j;queue<node>q;while(scanf("%d%d",&n,&k)!=EOF){memset(flag,0,sizeof(flag));a.step=0;a.x=n;q.push(a);flag[n]=1;while(!q.empty()){     a=q.front();     q.pop();if(a.x==k)        {         printf("%d\n",a.step);         break;        }str=a;str.step=a.step+1;str.x=a.x+1;if(find(str.x)){str.step=a.step+1;flag[str.x]=1;q.push(str);}str.x=a.x-1;if(find(str.x)){str.step=a.step+1;flag[str.x]=1;q.push(str);}str.x=a.x*2;if(find(str.x)){str.step=a.step+1;flag[str.x]=1;q.push(str);}}}}

0 0
原创粉丝点击