Skip to content

Commit e07e0cb

Browse files
committed
add minimum spanning tree kruskal
1 parent ad935df commit e07e0cb

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
num_nodes, num_edges = list(map(int,input().split()))
2+
3+
edges = []
4+
5+
for i in range(num_edges):
6+
node1, node2, cost = list(map(int,input().split()))
7+
edges.append((i,node1,node2,cost))
8+
9+
edges = sorted(edges, key=lambda edge: edge[3])
10+
11+
parent = [i for i in range(num_nodes)]
12+
13+
def find_parent(i):
14+
if(i != parent[i]):
15+
parent[i] = find_parent(parent[i])
16+
return parent[i]
17+
18+
minimum_spanning_tree_cost = 0
19+
minimum_spanning_tree = []
20+
21+
for edge in edges:
22+
parent_a = find_parent(edge[1])
23+
parent_b = find_parent(edge[2])
24+
if(parent_a != parent_b):
25+
minimum_spanning_tree_cost += edge[3]
26+
minimum_spanning_tree.append(edge)
27+
parent[parent_a] = parent_b
28+
29+
print(minimum_spanning_tree_cost)
30+
for edge in minimum_spanning_tree:
31+
print(edge)

0 commit comments

Comments
 (0)