map_in = [ ['A', 'E', 1], ['A', 'B', 2], ['A', 'C', 1], ['A', 'D', 1], ['A', 'E', 1], ['B', 'G', 1], ['B', 'J', 2], ['C', 'D', 3], ['C', 'G', 3], ['C', 'F', 3], ['D', 'G', 2], ['D', 'H', 1], ['D', 'I', 2], ['E', 'H', 1], ['E', 'I', 3], ['F', 'J', 1], ['F', 'G', 1], ['G', 'K', 2], ['G', 'I', 3], ['H', 'L', 2], ['H', 'I', 1], ['I', 'M', 3], ['J', 'S', 2], ['K', 'N', 1], ['K', 'L', 3], ['L', 'R', 1], ['L', 'M', 1], ['M', 'N', 2], ['M', 'Q', 1], ['M', 'S', 1], ['N', 'P', 1], ['Q', 'O', 1], ['O', 'R', 3], ['P', 'O', 1], ['R', 'S', 1], ] def dp(now_dis, next_node): for src, dst, dis in map_in: if src == next_node: now_dis += dis if dst == 'S': ans.append(now_dis) else: dp(now_dis, dst) ans = [] for src, dst, dis in map_in: if src == 'A': dp(dis, dst) print(min(ans))