Advertisement
Riz1Ahmed

Kruskal Algorithm

Feb 19th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. /***** Minimum Spanning Tree (Kruskal) Algorithm ******
  2. Given a wighted graph with N node & E e edges.
  3. Find Minimum Spanning Tree. Traverse all Node with minCost.*/
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6. struct eg{ int u,v; };
  7. int par[80000];
  8. int findP(int x) {
  9.     return par[x] == x ? x : (par[x]=findP(par[x]));
  10. }
  11. int main(){
  12.     int n,e,i,j,k,f;
  13.     map<int,eg>mp;
  14.     cin>>n>>e;
  15.     int ans=0,u,v,w[n+2];
  16.     for (i=0; i<=n; i++) par[i]=i;
  17.     for (i=0; i<e; i++)
  18.         cin>>u>>v>>w[i],
  19.         mp[w[i]]={u,v};
  20.  
  21.     sort(w,w+e);
  22.     for (i=0; i<e; i++){
  23.         cout<<w[i]<<" "<<mp[w[i]].u<<" "<<mp[w[i]].v<<" ";
  24.         u=mp[w[i]].u, v=mp[w[i]].v;
  25.         u=findP(u), v=findP(v);
  26.         if (u==v) puts("= Already Connected");
  27.         else{
  28.             puts("= Connected OK");
  29.             par[u]=v, ans+=w[i];
  30.         }
  31.     }
  32.     printf("\nMinimum Spanning Tree with Kruskal is %d\n",ans);
  33.     return 0;
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement