Tutorialspoint
Problem
Solution
Submissions

Minimum Spanning Tree (MST)

Certification: Advanced Level Accuracy: 66.67% Submissions: 3 Points: 15

Write a Python function that implements Kruskal's algorithm to find a connected, undirected graph's Minimum Spanning Tree (MST). The MST is a subset of the edges that connects all vertices with the minimum possible total edge weight.

Example 1
  • Input: Edges = [(0, 1, 10), (0, 2, 6), (0, 3, 5), (1, 3, 15), (2, 3, 4)], Vertices = 4
  • Output: [(2, 3, 4), (0, 3, 5), (0, 2, 6)]
  • Explanation:
    • Step 1: Sort all edges in non-decreasing order by weight: (2,3,4), (0,3,5), (0,2,6), (0,1,10), (1,3,15).
    • Step 2: Pick edges one by one and add to MST if they don't form a cycle.
    • Step 3: First edge (2,3,4) is added.
    • Step 4: Second edge (0,3,5) is added.
    • Step 5: Third edge (0,2,6) is added.
    • Step 6: No need to add more edges as all vertices are already connected.
    • Step 7: The MST consists of edges [(2,3,4), (0,3,5), (0,2,6)] with total weight 15.
Example 2
  • Input: Edges = [(0, 1, 4), (0, 2, 3), (1, 2, 1), (1, 3, 2), (2, 3, 4)], Vertices = 4
  • Output: [(1, 2, 1), (1, 3, 2), (0, 2, 3)]
  • Explanation:
    • Step 1: Sort all edges in non-decreasing order by weight: (1,2,1), (1,3,2), (0,2,3), (0,1,4), (2,3,4).
    • Step 2: Pick edges one by one and add to MST if they don't form a cycle.
    • Step 3: First edge (1,2,1) is added.
    • Step 4: Second edge (1,3,2) is added.
    • Step 5: Third edge (0,2,3) is added.
    • Step 6: No need to add more edges as all vertices are already connected.
    • Step 7: The MST consists of edges [(1,2,1), (1,3,2), (0,2,3)] with total weight 6.
Constraints
  • 1 ≤ number of vertices ≤ 10^5
  • 0 ≤ number of edges ≤ 10^6
  • 1 ≤ edge weights ≤ 10^6
  • Graph is connected
  • Time Complexity: O(E log E), where E is the number of edges
  • Space Complexity: O(V + E), where V is the number of vertices and E is the number of edges
SetAlgorithmsAmazonFacebook
Editorial

Login to view the detailed solution and explanation for this problem.

My Submissions
All Solutions
Lang Status Date Code
You do not have any submissions for this problem.
User Lang Status Date Code
No submissions found.

Please Login to continue
Solve Problems

 
 
 
Output Window

Don't have an account? Register

Solution Hints

  • Sort all edges in non-decreasing order of their weight
  • Use a disjoint set (Union-Find) data structure to detect cycles
  • Process edges in order of increasing weight
  • For each edge, if including it doesn't form a cycle, add it to the MST
  • Return the list of edges in the MST

Steps to solve by this approach:

 Step 1: Sort all edges in non-decreasing order of their weight.

 Step 2: Initialize a disjoint set data structure with Union-Find operations.
 Step 3: For each edge in sorted order, check if including it creates a cycle.
 Step 4: If no cycle is formed, include the edge in the MST and union the sets.
 Step 5: Continue until V-1 edges are included (where V is the number of vertices).
 Step 6: Return the edges of the minimum spanning tree.

Submitted Code :