[python]1697号

826 ワード

import sys
from collections import deque

N, K = map(int,sys.stdin.readline().split())
visited = [0] *100001

def bfs(N):
    ctn = 0
    queue = deque([[N,ctn]])
    while queue:
        c = queue.popleft()
        c_position = c[0]
        ctn = c[1]
        if not visited[c_position]:
            visited[c_position] = 1
            if c_position == K:
                return ctn
            ctn+=1
            if (c_position*2) <= 100000:
                queue.append([c_position*2,ctn])
            if (c_position+1 ) <= 100000:
                queue.append([c_position+1,ctn])
            if (c_position-1) >= 0:
                queue.append([c_position-1,ctn])
    return ctn

print(bfs(N))
  • なぜ100000はMaxが100001を乗じたのか
  • 01、タイムアウト
  • を防ぐために存在するかどうかを確認します.