



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Greedy algorithm
Typology: Study notes
1 / 5
This page cannot be seen from the preview
Don't miss anything!




// A C / C++ program for Prim's Minimum Spanning Tree (MST) algorithm. // The program is for adjacency matrix representation of the graph
#include <stdio.h> #include <limits.h>
// Number of vertices in the graph #define V 5
// A utility function to find the vertex with minimum key value, from // the set of vertices not yet included in MST int minKey(int key[], bool mstSet[]) { // Initialize min value int min = INT_MAX, min_index;
for (int v = 0; v < V; v++) if (mstSet[v] == false && key[v] < min)
// The MST will have V vertices for (int count = 0; count < V-1; count++) { // Pick thd minimum key vertex from the set of vertices // not yet included in MST int u = minKey(key, mstSet);
// Add the picked vertex to the MST Set mstSet[u] = true;
// Update key value and parent index of the adjacent vertices of // the picked vertex. Consider only those vertices which are not yet // included in MST for (int v = 0; v < V; v++)
// graph[u][v] is non zero only for adjacent vertices of m // mstSet[v] is false for vertices not yet included in MST // Update the key only if graph[u][v] is smaller than key[v] if (graph[u][v] && mstSet[v] == false && graph[u][v] < key[v]) parent[v] = u, key[v] = graph[u][v]; }
// print the constructed MST printMST(parent, V, graph); }
// driver program to test above function int main() {
/* Let us create the following graph 2 3 (0)--(1)--(2) | / \ | 6| 8/ \5 | | / \ | (3)-------(4) 9 */ int graph[V][V] = {{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}, };
// Print the solution primMST(graph);
return 0; }
Edge Weight 0 - 1 2 1 - 2 3 0 - 3 6 1 - 4 5