class Edge:
def __init__(self, u, v, weight):
self.u = u
self.v = v
self.weight = weight
def __str__(self):
return f"({self.u},{self.v},{self.weight})"
def __lt__(self, other):
return self.weight <= other.weight
def __eq__(self, other):
self.weight == other.weight
edges = [
Edge(1, 5, 4),
Edge(1, 2, 2),
Edge(1, 4, 1),
Edge(2, 1, 2),
Edge(2, 4, 3),
Edge(2, 3, 3),
Edge(2, 6, 7),
Edge(3, 2, 3),
Edge(3, 6, 8),
Edge(3, 4, 5),
Edge(4, 1, 1),
Edge(4, 2, 3),
Edge(4, 3, 5),
Edge(4, 5, 9),
Edge(5, 1, 4),
Edge(5, 4, 9),
Edge(6, 2, 7),
Edge(6, 3, 8)
]
n = len(edges)
# 7 vertices (1 ==> 6)
r = range(1, 7)
tree_id = {i: i for i in r}
res = []
edges.sort(key=lambda e:e.weight)
cost = 0
for edge in edges:
if tree_id[edge.u] != tree_id[edge.v]:
cost += edge.weight
res.append(edge)
old_id, new_id = tree_id[edge.u], tree_id[edge.v]
for i in r:
if tree_id[i] == old_id:
tree_id[i] = new_id
print('\n'.join(map(str, res)))
To embed this program on your website, copy the following code and paste it into your website's HTML: