Advertisement
shakhawatt

KRUSKAL

Sep 17th, 2020
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int pr[10000];
  5.  
  6.  
  7.  
  8. struct edge {
  9.     int u, v, w;
  10.     bool operator<(const edge& p) const
  11.     {
  12.         return w < p.w;
  13.     }
  14. };
  15.  
  16.  
  17. vector<edge> e;
  18.  
  19. int find(int r)
  20. {
  21.     return (pr[r] == r) ? r : find(pr[r]);
  22. }
  23.  
  24. int mst(int n)
  25. {
  26.     sort(e.begin(), e.end());
  27.  
  28.     for (int i = 1; i <= n; i++)
  29.         pr[i] = i;
  30.  
  31.     int count = 0, s = 0;
  32.  
  33.     for (int i = 0; i < (int)e.size(); i++) {
  34.  
  35.         int u = find(e[i].u);
  36.  
  37.         int v = find(e[i].v);
  38.  
  39.         if (u != v) {
  40.             pr[u] = v;
  41.  
  42.             count++;
  43.  
  44.             s += e[i].w;
  45.  
  46.             if (count == n - 1)
  47.                 break;
  48.         }
  49.     }
  50.     return s;
  51. }
  52.  
  53. int main()
  54. {
  55.     // READ("in");
  56. #ifndef ONLINE_JUDGE
  57.     freopen("input.txt", "r", stdin);
  58.     freopen("output.txt", "w", stdout);
  59. #endif
  60.    
  61.     int n, m;
  62.  
  63.     cin >> n >> m;
  64.  
  65.     for (int i = 1; i <= m; i++) {
  66.         int u, v, w;
  67.         cin >> u >> v >> w;
  68.         edge get;
  69.         get.u = u;
  70.         get.v = v;
  71.         get.w = w;
  72.         e.push_back(get);
  73.     }
  74.  
  75.  
  76.     cout << mst(n) << endl;
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement