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], ] # 点的数量 数出来的 n = 19 # 初始化图 到自身到距离为0 fig = [[float('inf')] * n for _ in range(n)] for i in range(n): fig[i][i] = 0 # 构建好路 每个节点之间的距离 for src, dst, dis in map_in: src, dst = ord(src) - ord('A'), ord(dst) - ord('A') fig[src][dst] = fig[dst][src] = dis # 从起点到每个节点到距离 S为最后一个节点 因为是字母序排序的 dis = [float('inf')] * n dis[0] = 0 for i in range(n): for j in range(n): dis[j] = min(dis[j], dis[i] + fig[i][j]) print(dis) print(dis[-1])