mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-27 23:11:09 +00:00
9a44eb4479
* organized graph algorithms * all graph algorithms in Graphs/ folder * all graph algorithms are in one folder * Rename number theory/factorial_python.py to maths/factorial_python.py
33 lines
769 B
Python
33 lines
769 B
Python
from __future__ import print_function
|
|
num_nodes, num_edges = list(map(int,input().split()))
|
|
|
|
edges = []
|
|
|
|
for i in range(num_edges):
|
|
node1, node2, cost = list(map(int,input().split()))
|
|
edges.append((i,node1,node2,cost))
|
|
|
|
edges = sorted(edges, key=lambda edge: edge[3])
|
|
|
|
parent = [i for i in range(num_nodes)]
|
|
|
|
def find_parent(i):
|
|
if(i != parent[i]):
|
|
parent[i] = find_parent(parent[i])
|
|
return parent[i]
|
|
|
|
minimum_spanning_tree_cost = 0
|
|
minimum_spanning_tree = []
|
|
|
|
for edge in edges:
|
|
parent_a = find_parent(edge[1])
|
|
parent_b = find_parent(edge[2])
|
|
if(parent_a != parent_b):
|
|
minimum_spanning_tree_cost += edge[3]
|
|
minimum_spanning_tree.append(edge)
|
|
parent[parent_a] = parent_b
|
|
|
|
print(minimum_spanning_tree_cost)
|
|
for edge in minimum_spanning_tree:
|
|
print(edge)
|