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)