Untitled
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