Advertisement
Falak_Ahmed_Shakib

kruskal (minimam spenning tree)MST

Oct 17th, 2020 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. #define pb push_back
  5. #define eb emplace_back
  6. const int MAX=1e5+10;
  7. const ll inf=INFINITY;
  8. ll n,m;
  9. ll dis[MAX];
  10. ll par[MAX];
  11. typedef struct
  12. {
  13. ll u,v,w;
  14. }node;
  15. vector<node>adj;
  16. bool cmp(node a,node b)
  17. {
  18. return a.w<b.w;
  19. }
  20.  
  21. ll Find(ll n)
  22. {
  23. if(par[n]==n)
  24. return n;
  25. else return par[n]=Find(par[n]);
  26. }
  27. ll krushkal()
  28. {
  29. ll ans=0,p1=0,p2=0,cnt=0,sum=0;
  30. for(ll i=0;i<=n;i++)
  31. {
  32. par[i]=i;
  33. }
  34. for(ll i=0;i<adj.size();i++)
  35. {
  36. p1=Find(adj[i].u);
  37. p2=Find(adj[i].v);
  38. if(p1!=p2)
  39. {
  40. par[p1]=p2;
  41. cnt++;
  42. sum+=adj[i].w;
  43. if(cnt==n-1)
  44. break;
  45. }
  46. }
  47. return sum;
  48.  
  49. }
  50.  
  51.  
  52. int main()
  53. {
  54. cin>>n>>m;
  55. for(ll i=0;i<m;i++)
  56. {
  57. ll a,b,c;
  58. cin>>a>>b>>c;
  59. node q;
  60. q.u=a;
  61. q.v=b;
  62. q.w=c;
  63. adj.push_back(q);
  64. }
  65. sort(adj.begin(),adj.end(),cmp);
  66. cout<<krushkal()<<endl;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement