def prim( paths ): data = Data_Manager() conn = defaultdict( list ) start = data.get_start() #don't change (12, 16, 17, 21) starting cities for x in start: visited = [] path = [] visited.append(x) #append start city key connections = data.get_conn(x) #(weight, type, connect) heapq.heapify(connections) while connections: #(weight, type, Connection) cost, c1, c2 = heapq.heappop(connections) if c2 not in visited: visited.append(c2) path.append((c1, c2, cost)) for x in data.get_conn(c2): heapq.heappush(connections, x) paths.append(path) #for path in paths: #for x in path: #print(str.format("({0:3}, {1:3}, {2:5.4}), ", x[0], x[1], x[2]), end = "") #print() allPaths = [] for x in paths: allPaths.append(_draw_paths(x)) return allPaths
def _end_path(city): #get list of end cities short = (float('inf'), 0) data = Data_Manager() end = data.get_start() for c in end: path = dijkstra(city, c) if path[0] < short[0]: short = path dist = short[0] path = short[1] return (path[0], path[len(path) - 1], dist)