UNB/ CS/ David Bremner/ teaching/ cs3383/ lectures/ 23.0-demos/ nigeria.py
#!/usr/bin/env python3
# source for data https://raw.githubusercontent.com/PeaceAyegba/MST-Algorithms/master/dataset%2036.txt

from math import inf
from kruskal import kruskal,weighted_edges,as_dot
import sys

def total_dist(T,D):
    sum = 0
    for (u,v) in T:
        sum += D[u][v]
    return sum

edges = [
    [0,1,81.5865],
    [1,2,82.5435],
    [2,3,67.9046],
    [3,4,64.1961],
    [4,5,253.6179],
    [5,6,113.4832],
    [1,6,89.886],
    [0,9,252.6349],
    [0,36,338.7641],
    [1,7,73.8749],
    [5,8,208.4023],
    [5,25,123.7738],
    [7,8,169.7241],
    [8,20,196.889],
    [8,23,173.2129],
    [8,35,160.5986],
    [9,35,118.3903],
    [10,11,261.9837],
    [10,33,185.8489],
    [10,36,219.6409],
    [36,9,349.2051],
    [11,13,209.3103],
    [12,13,95.6952],
    [12,17,232.2036],
    [13,14,285.0276],
    [14,15,129.7066],
    [14,16,187.3142],
    [15,21,298.9509],
    [16,17,130.5206],
    [17,18,137.4058],
    [18,19,165.1677],
    [19,35,130.2419],
    [20,19,84.6042],
    [20,23,181.5531],
    [20,29,332.0392],
    [21,22,125.4547],
    [22,20,337.2769],
    [23,24,165.3347],
    [24,25,180.6815],
    [26,23,66.4409],
    [26,30,112.0243],
    [27,29,54.7012],
    [27,31,174.6213],
    [28,31,92.6074],
    [28,25,154.9616],
    [29,30,177.6956],
    [30,27,73.2377],
    [31,32,189.1641],
    [32,25,166.7202],
    [33,11,91.1888],
    [33,34,199.7968],
    [34,12,202.7576],
    [34,18,171.3123],
    [34,35,161.2244],
    [34,9,138.7795]
]


Graph = { j : [] for j in range(0,37) }
Dist = [ [ inf for j in range(37) ] for i in range(37) ]
for edge in edges:
    (a,b,dist) = edge
    Dist[a][b] = Dist[b][a] = dist
    Graph[a].append((b,dist))
    Graph[b].append((a,dist))

E=weighted_edges(Graph)
T = kruskal (37,E)   
as_dot(T)
print(total_dist(T,Dist),file=sys.stderr)