Bird
Raised Fist0
DSA C++programming~30 mins

Minimum Spanning Tree Prim's Algorithm in DSA C++ - Build from Scratch

Choose your learning style10 modes available
Minimum Spanning Tree using Prim's Algorithm
📖 Scenario: You are working as a network engineer. You need to connect several computers with cables. Each cable has a cost. Your goal is to connect all computers with the least total cost.
🎯 Goal: Build a program that finds the minimum total cost to connect all computers using Prim's algorithm on a weighted graph.
📋 What You'll Learn
Create an adjacency matrix to represent the graph with exact weights
Create a variable to track the number of vertices
Implement Prim's algorithm to find the minimum spanning tree
Print the edges chosen and the total minimum cost
💡 Why This Matters
🌍 Real World
Network engineers use minimum spanning trees to design cost-efficient networks connecting computers or routers.
💼 Career
Understanding Prim's algorithm helps in roles involving network design, optimization, and graph-based problem solving.
Progress0 / 4 steps
1
Create the graph adjacency matrix
Create a 2D vector called graph with 5 vertices representing the following weighted edges:
graph = {{0, 2, 0, 6, 0}, {2, 0, 3, 8, 5}, {0, 3, 0, 0, 7}, {6, 8, 0, 0, 9}, {0, 5, 7, 9, 0}}
DSA C++
Hint

Use vector> to create a 2D matrix with the exact values given.

2
Set the number of vertices
Create an integer variable called V and set it to the number of vertices in the graph, which is 5.
DSA C++
Hint

Count the number of vertices in the graph and assign it to V.

3
Implement Prim's algorithm core logic
Write a function called primMST that takes graph and V as parameters and finds the minimum spanning tree using Prim's algorithm. Use arrays key, parent, and mstSet inside the function. The function should fill parent with the MST edges.
DSA C++
Hint

Use arrays to track the minimum edge weights and visited vertices. Pick the smallest edge each time.

4
Print the MST edges and total cost
In main(), create a parent vector of size V. Call primMST(graph, V, parent). Then print each edge in the MST as parent[i] - i : weight and print the total minimum cost as Total minimum cost: X.
DSA C++
Hint

Loop from 1 to V-1 and print edges from parent[i] to i with their weights. Sum the weights for total cost.

Practice

(1/5)
1. What is the main goal of Prim's Algorithm in graph theory?
easy
A. To find the shortest path between two nodes
B. To detect cycles in a graph
C. To find the minimum spanning tree of a connected weighted graph
D. To sort the vertices of a graph

Solution

  1. Step 1: Understand Prim's Algorithm purpose

    Prim's Algorithm is designed to find a tree that connects all vertices with the minimum total edge weight.
  2. Step 2: Differentiate from other graph algorithms

    It is not used for shortest path, cycle detection, or sorting vertices, which are different problems.
  3. Final Answer:

    To find the minimum spanning tree of a connected weighted graph -> Option C
  4. Quick Check:

    Prim's Algorithm = Minimum Spanning Tree [OK]
Hint: Prim's always builds a tree with minimum total edge weight [OK]
Common Mistakes:
  • Confusing Prim's with shortest path algorithms
  • Thinking it detects cycles
  • Assuming it sorts nodes
2. Which of the following is the correct way to initialize the key array in Prim's Algorithm in C++?
easy
A. int key[V]; for(int i=0; i
B. int key[V] = {0};
C. int key[V]; for(int i=0; i
D. int key[V]; for(int i=0; i

Solution

  1. Step 1: Understand key array role

    The key array stores minimum edge weights to include each vertex; initially, all are set to a very large value (infinity).
  2. Step 2: Check initialization options

    Setting key[i] = INT_MAX correctly represents infinity; other options set to 0 or -1 are incorrect for this purpose.
  3. Final Answer:

    int key[V]; for(int i=0; i -> Option A
  4. Quick Check:

    Initialize keys with INT_MAX for minimum edge tracking [OK]
Hint: Initialize keys with INT_MAX to represent infinity [OK]
Common Mistakes:
  • Initializing keys with 0 instead of INT_MAX
  • Using negative values incorrectly
  • Not initializing keys at all
3. Consider the following graph with 4 vertices and edges with weights:

0 - 1 : 10
0 - 2 : 6
0 - 3 : 5
1 - 3 : 15
2 - 3 : 4
What is the total weight of the minimum spanning tree found by Prim's Algorithm starting from vertex 0?
medium
A. 21
B. 19
C. 20
D. 25

Solution

  1. Step 1: Start from vertex 0 and pick minimum edges

    Edges from 0: (0-3)=5, (0-2)=6, (0-1)=10. Pick (0-3)=5 first.
  2. Step 2: Add next minimum edge connecting new vertices

    From vertices {0,3}, edges are (3-2)=4, (3-1)=15, (0-2)=6, (0-1)=10. Pick (3-2)=4 next.
  3. Step 3: Add last vertex with minimum edge

    From {0,3,2}, edges to 1 are (0-1)=10 and (3-1)=15. Pick (0-1)=10.
  4. Step 4: Calculate total weight

    Total = 5 + 4 + 10 = 19.
  5. Final Answer:

    19 -> Option B
  6. Quick Check:

    Sum of chosen edges = 19 [OK]
Hint: Pick smallest edge connecting new vertex each step [OK]
Common Mistakes:
  • Choosing edges with larger weights first
  • Not updating the set of included vertices
  • Adding edges that form cycles
4. The following C++ code snippet is intended to implement Prim's Algorithm but has a bug. What is the error?

const int V = 4;
int key[V] = {INT_MAX, INT_MAX, INT_MAX, INT_MAX};
bool mstSet[V] = {false, false, false, false};
key[0] = 0;
for (int count = 0; count < V - 1; count++) {
    int u = -1;
    for (int v = 0; v < V; v++) {
        if (!mstSet[v] && (u == -1 || key[v] < key[u]))
            u = v;
    }
    mstSet[u] = true;
    for (int v = 0; v < V; v++) {
        if (graph[u][v] && !mstSet[v] && graph[u][v] < key[v])
            key[v] = graph[u][v];
    }
}
medium
A. The condition 'graph[u][v]' should check for non-zero edges
B. The loop should run from 0 to V instead of V - 1
C. The key array is not initialized with INT_MAX
D. The variable 'u' is initialized incorrectly inside the loop

Solution

  1. Step 1: Analyze the neighbor update condition

    The condition if(graph[u][v] && !mstSet[v] && graph[u][v] < key[v]) uses graph[u][v] as a boolean check (true if non-zero).
  2. Step 2: Identify the bug

    This implicit check assumes positive weights and treats 0 as no edge. Standard implementations explicitly use graph[u][v] != 0 to clearly indicate checking for edge existence (non-zero weight).
  3. Step 3: Rule out other options

    A: 'u' is correctly initialized to -1 inside each iteration. B: V-1 iterations build the tree correctly. C: key array is initialized with INT_MAX.
  4. Final Answer:

    The condition 'graph[u][v]' should check for non-zero edges -> Option A
  5. Quick Check:

    Edge check: graph[u][v] != 0 [OK]
Hint: Check edge existence condition carefully for zero weights [OK]
Common Mistakes:
  • Misinitializing 'u' outside the loop
  • Incorrect loop range
  • Not initializing key array properly
5. Given a graph with vertices 0 to 5 and edges:

0-1: 3, 0-3: 1, 1-2: 1, 1-3: 3, 1-4: 10, 2-4: 5, 3-4: 6, 4-5: 2
If Prim's Algorithm starts from vertex 0, which edge will NOT be included in the minimum spanning tree?
hard
A. Edge 1-2 with weight 1
B. Edge 0-1 with weight 3
C. Edge 4-5 with weight 2
D. Edge 3-4 with weight 6

Solution

  1. Step 1: Build MST step-by-step from vertex 0

    Start at 0: edges (0-3)=1, (0-1)=3. Pick (0-3)=1 first.
  2. Step 2: Add next minimum edges connecting new vertices

    From {0,3}, edges: (3-1)=3, (3-4)=6, (0-1)=3. Pick (0-1)=3 or (3-1)=3 (same weight). Pick (0-1)=3.
  3. Step 3: Continue adding minimum edges

    From {0,1,3}, edges: (1-2)=1, (1-4)=10, (3-4)=6. Pick (1-2)=1.
  4. Step 4: Add edge to vertex 4

    From {0,1,2,3}, edges: (2-4)=5, (3-4)=6, (1-4)=10. Pick (2-4)=5.
  5. Step 5: Add edge to vertex 5

    From {0,1,2,3,4}, edge: (4-5)=2.
  6. Step 6: Identify excluded edge

    Edge (3-4)=6 is not chosen because (2-4)=5 is cheaper and connects 4 earlier.
  7. Final Answer:

    Edge 3-4 with weight 6 -> Option D
  8. Quick Check:

    Exclude heavier edge when cheaper path exists [OK]
Hint: Always pick smallest edge connecting new vertex, exclude heavier alternatives [OK]
Common Mistakes:
  • Including heavier edges when cheaper ones exist
  • Not updating candidate edges after each addition
  • Assuming all edges connected to MST are included
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard