1 import queue
2
3 MAXN = 100000
4 # 判重标记, visited[i] = true表示i已经扩展过
5 visited = [0 for i in range(MAXN + 10)]
6
7
8 class Step:
9 # x-位置,steps-到达x所需的步数
10 x = 0
11 steps = 0
12
13 def __init__(self, p1, p2):
14 self.x = p1
15 self.steps = p2
16
17
18 def main():
19 global visited, MAXN
20 N, K = map(int, input().split())
21 startLocation = Step(N, 0)
22 # 声明一个队列对象
23 q = queue.Queue()
24 # 初始位置Step对象插入队列
25 q.put(startLocation)
26 visited[N] = 1
27 while not q.empty():
28 # 获取元素后会出列
29 s = q.get()
30 # 找到目标
31 if s.x == K:
32 print("农夫最少要花%d分钟才能抓住牛" % s.steps)
33 return 0
34 else:
35 if s.x - 1 >= 0 and visited[s.x-1] == 0:
36 q.put(Step(s.x - 1, s.steps + 1))
37 visited[s.x - 1] = 1
38 if s.x + 1 <= MAXN and visited[s.x+1] == 0:
39 q.put(Step(s.x + 1, s.steps + 1))
40 visited[s.x + 1] = 1
41 if s.x * 2 <= MAXN and visited[s.x*2] == 0:
42 q.put(Step(s.x * 2, s.steps + 1))
43 visited[s.x * 2] = 1
44
45 return 0
46
47
48 if __name__ == '__main__':
49 main()