CJamie

prims

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