minimum_spanning_tree keeps the cheapest roads that still connect everyone.
Goal
Print MST edges and total km.
import networkx as nx
G = nx.Graph()
G.add_edge('Nairobi', 'Nakuru', weight=160)
G.add_edge('Nakuru', 'Kisumu', weight=180)
G.add_edge('Nairobi', 'Mombasa', weight=480)
G.add_edge('Mombasa', 'Kisumu', weight=550)
T = nx.minimum_spanning_tree(G)
print(sorted(T.edges(data=True)))
print(sum(d['weight'] for *_, d in T.edges(data=True)))import networkx as nx
print(list(nx.minimum_spanning_edges(nx.path_graph(3), data=False)))import networkx as nx
G = nx.complete_graph(4)
nx.set_edge_attributes(G, 1, 'weight')
print(nx.minimum_spanning_tree(G).number_of_edges())import networkx as nx
print(nx.is_tree(nx.path_graph(5)))