Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. #include <algorithm>
  5.  
  6. struct Edge {
  7. int u, v, weight;
  8. bool operator<(Edge const& other) {
  9. return weight < other.weight;
  10. }
  11. Edge (int x ,int y ,int z)
  12. {
  13. u = x;
  14. v = y;
  15. weight = z;
  16. }
  17.  
  18. };
  19.  
  20. vector<int> parent ,ranked;
  21.  
  22.  
  23. void make_set(int v) {
  24. parent[v] = v;
  25. ranked[v] = 0;
  26. }
  27.  
  28. int find_set(int v) {
  29. if (v == parent[v])
  30. return v;
  31. return parent[v] = find_set(parent[v]);
  32. }
  33.  
  34.  
  35. void union_sets(int a, int b) {
  36. a = find_set(a);
  37. b = find_set(b);
  38. if (a != b) {
  39. if (ranked[a] < ranked[b])
  40. swap(a, b);
  41. parent[b] = a;
  42. if (ranked[a] == ranked[b])
  43. ranked[a]++;
  44. }
  45. }
  46.  
  47.  
  48.  
  49. int main()
  50. {
  51.  
  52.  
  53.  
  54. int n ;
  55. cout<<"enter vert num "<<endl;
  56. cin>>n;
  57. int k;
  58. cout<<"enter edges num " <<endl;
  59. cin>>k;
  60. vector<Edge> edges;
  61. parent = vector<int>(n);
  62. ranked = vector<int>(n);
  63.  
  64.  
  65. for( int i =0 ;i<k;i++)
  66. {
  67. int x;
  68. cin>>x;
  69. int y;
  70. cin>> y;
  71. int w;
  72. cin>>w;
  73. Edge e(x,y,w);
  74. edges.push_back(e);
  75. }
  76.  
  77.  
  78. int cost =0;
  79.  
  80. vector<Edge> result;
  81.  
  82. for (int i = 0; i < n; i++)
  83. {
  84. make_set(i);
  85. }
  86. sort(edges.begin(),edges.end());
  87.  
  88.  
  89. for(Edge e : edges)
  90. {
  91. if (find_set(e.u) != find_set(e.v)) {
  92. cout<<"adding "<< e.weight<<endl;
  93. cost += e.weight;
  94. result.push_back(e);
  95. union_sets(e.u, e.v);
  96. }
  97.  
  98. }
  99.  
  100. cout<<"cost is "<<cost;
  101.  
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement