Vikhyath_11

p9

Jul 26th, 2024
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <limits.h>
  5.  
  6. #define V 5
  7.  
  8. int minKey(int key[], bool mstSet[]) {
  9. int min = INT_MAX, min_index;
  10. for (int v = 0; v < V; v++) {
  11. if (mstSet[v] == false && key[v] < min) {
  12. min = key[v];
  13. min_index = v;
  14. }
  15. }
  16. return min_index;
  17. }
  18.  
  19. void printMST(int parent[], int graph[V][V]) {
  20. printf("Edge Weight\n");
  21. for (int i = 1; i < V; i++)
  22. printf("%d - %d %d \n", parent[i], i, graph[i][parent[i]]);
  23. }
  24.  
  25. void primMST(int graph[V][V]) {
  26. int parent[V];
  27. int key[V];
  28. bool mstSet[V];
  29. for (int i = 0; i < V; i++) {
  30. key[i] = INT_MAX;
  31. mstSet[i] = false;
  32. }
  33. key[0] = 0;
  34. parent[0] = -1;
  35. for (int count = 0; count < V - 1; count++) {
  36. int u = minKey(key, mstSet);
  37. mstSet[u] = true;
  38. for (int v = 0; v < V; v++) {
  39. if (graph[u][v] && mstSet[v] == false && graph[u][v] < key[v]) {
  40. parent[v] = u;
  41. key[v] = graph[u][v];
  42. }
  43. }
  44. }
  45. printMST(parent, graph);
  46. }
  47.  
  48. int main() {
  49. int graph[V][V] = {{0, 2, 0, 6, 0},
  50. {2, 0, 3, 8, 5},
  51. {0, 3, 0, 0, 7},
  52. {6, 8, 0, 0, 9},
  53. {0, 5, 7, 9, 0}};
  54. primMST(graph);
  55. return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment