def getEdgeRobustness(Graph):
    new = mst.Graph(Graph.V)
    new.graph = Graph.graph
    new.r = mRE.randomConnections(new, 1)
    efficiency = []
    while True:
        try:
            new.dist()
            efficiency.append(eff.getEfficiency(new))
            new.newConnection(1, 0)
        except IndexError:
            return mean(efficiency)
def main():
    #Gets User input
    initial, groups = get_user_input()  #, totalnodes, inc

    #Creates Plots according to user inputs
    numPlots = 1  #int(((totalnodes - initial)/inc)) + 1
    fig, axs = plt.subplots(numPlots, sharex=True)
    fig.suptitle('Efficiency vs Edges at nodes')
    i = 0

    #Loops user inputs so creates n starting points with nodes,
    for num1 in range(initial, initial + 1, 1):  #totalnodes + 1, inc):
        g = mst.Graph(num1)
        g.newMST()
        edges = int((num1 * (num1 - 1)) / 2 - (num1 - 1)) + 1
        interval = int(float(edges) * float(groups / 100))

        Data = {
            'Edges': list(range(1, edges, interval)),
            'Efficiency': [],
            'Efficiency Alt': [],
            # 'Network Connectivity': [],
            # 'Robustness': [],
            # 'Edge Robustness': []
        }
        add_Network_Data(g, Data, interval)
        df = pd.DataFrame(
            Data,
            columns=[
                'Edges',
                'Efficiency',
                'Efficiency Alt',
                # 'Network Connectivity', 'Robustness',
                # 'Edge Robustness'
            ])
        name = 'Nodes=' + str(num1)

        create_Graph(numPlots, axs, i, df, name)

        create_dataframe_folder(df, name)

        i += 1
    #Shows final plot
    if len(sys.argv) > 1:
        plt.show()
import distances
import cities
import MST

distances = distances.get_distances()
cities = cities.get_cities()

vertices = len(distances)

graph = MST.Graph(vertices)

for city, endpoints in distances.items():
    for city2 in endpoints:
        graph.add_edge(city2['start_id'], city2['end_id'], city2['distance'])

result, cost = graph.MST()

print ("Edges of MST")
for u, v, weight in result:
	print("%s <-> %s = ~%d km" % (cities[u]['name'], cities[v]['name'], weight))

print("Total Cost => " , cost)