Dijkstra Nairobi→Kisumu, draw, report.txt.
Goal
Print 340 km and the report.
from pathlib import Path
import csv
import networkx as nx
Path('edges.csv').write_text('from,to,km\nNairobi,Nakuru,160\nNakuru,Kisumu,180\nNairobi,Mombasa,480\nMombasa,Kisumu,550\n', encoding='utf-8')
G = nx.Graph()
with Path('edges.csv').open(encoding='utf-8', newline='') as handle:
for row in csv.DictReader(handle):
G.add_edge(row['from'], row['to'], weight=int(row['km']))
path = nx.dijkstra_path(G, 'Nairobi', 'Kisumu')
km = nx.dijkstra_path_length(G, 'Nairobi', 'Kisumu')
print(path, km)
pos = {'Nairobi': (0, 0), 'Nakuru': (1, 1), 'Kisumu': (2, 0), 'Mombasa': (1.5, -1)}
nx.draw(G, pos, with_labels=True, node_color='#8ecae6')
plt.axis('off')
plt.savefig('map.png', dpi=120, bbox_inches='tight')
plt.show()
Path('report.txt').write_text('Nairobi-Kisumu km=' + str(km) + '\n', encoding='utf-8')
print(Path('report.txt').read_text(encoding='utf-8'))