Untitled

 avatar
unknown
plain_text
8 days ago
861 B
5
Indexable
#include <stdio.h> 
#include <limits.h> 
#define V 5 
int minKey(int key[], int mstSet[]) { 
 int min = INT_MAX, min_index;
 for (int v = 0; v < V; v++) {
 if (mstSet[v] == 0 && key[v] < min) { 
 min = key[v];
 min_index = v;
 } 
 } 
 return min_index;
}

void printMST(int parent[], int graph[V][V]) { 
 printf("Edge Weight\n");
 for (int i = 1; i < V; i++)
 printf("%d - %d %d \n", parent[i], i, graph[i][parent[i]]);
} 
void primMST(int graph[V][V]) { 
 int parent[V];
 int key[V];
 int mstSet[V];
 for (int i = 0; i < V; i++) {
 key[i] = INT_MAX;
 mstSet[i] = 0;
 } 
 key[0] = 0;
 parent[0] = -1;
 
for (int count = 0; count < V - 1; count++) {
 int u = minKey(key, mstSet);
 mstSet[u] = 1;
 for (int v = 0; v < V; v++)
 if (graph[u][v] && mstSet[v] == 0 && graph[u][v] < key[v]) { 
 parent[v] = u;
 key[v] = graph[u][v];
 } 
 } 
 printMST(parent, graph);
}
Editor is loading...
Leave a Comment