POJ-3278-Catch That Cow(bfs)

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 X",“1 or X + 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?

1 Input

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

2 Output

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

3 Sample Input

``````5 17
``````

4 Sample Output

``````4
``````

5 Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.

6 题意

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 `````` ``````#include"iostream" #include #include"string.h" using namespace std; int n,k; bool sign[200007]; struct node{ int x,step; }; bool check(int a) { if(!sign[a]&&a>=0&&a<110000) return true; return false; } void bfs() { node u,v; queue q; v.x=n;//初始化起点 v.step=0; q.push(v); sign[v.x]=true; while(!q.empty()){ u=q.front(); q.pop(); if(u.x==k){ cout<>n>>k; memset(sign,0,sizeof(sign)); bfs(); return 0; }``````