Advertisement
meriellez

Untitled

May 22nd, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. int n, m;
  7. int i, j;
  8. vector<long long> p(n);
  9.  
  10. void make_set(){
  11. for(i = 0; i < n; i++){
  12. p[i] = i;
  13. }
  14. }
  15.  
  16. int get_parent(long long v){
  17. return (v == p[v]) ? v : (p[v] = get_parent(p[v]));
  18. }
  19.  
  20. void unite(long long a, long long b){
  21. a = get_parent(a);
  22. b = get_parent(b);
  23. swap(a, b);
  24. if(a != b){
  25. p[a] = b;
  26. }
  27. }
  28.  
  29. int main() {
  30. // your code goes here
  31. cin >>n >>m;
  32. long long sum = 0;
  33.  
  34. p.assign(n, 0);
  35. make_set();
  36. /*for(i = 0; i < n; i++){
  37. cout <<p[i] <<' ';
  38. }
  39. cout <<endl;*/
  40.  
  41. vector < pair < long long, pair<long long, long long> > > g; // вес - вершина 1 - вершина 2
  42. for (i = 0; i < m; i++) {
  43. long long x, y, z;
  44. cin >>x >>y >>z;
  45. x--; y--;
  46. sum += z;
  47. z = z * (-1);
  48. g.push_back(make_pair(z, make_pair(x, y)));
  49. /* long long a = g[i].second.first, b = g[i].second.second, l = g[i].first;
  50. cout <<a <<' ' <<b <<' ' <<l <<endl;*/
  51. }
  52.  
  53. long long cost = 0;
  54. vector < pair<long long, long long> > res;
  55.  
  56. sort (g.begin(), g.end());
  57.  
  58. for (i = 0; i < m; i++) {
  59. long long a = g[i].second.first, b = g[i].second.second, l = g[i].first;
  60. //cout <<a <<' ' <<b <<' ' <<l <<endl;
  61. if (get_parent(a) != get_parent(b)) {
  62. cost += l;
  63. res.push_back (g[i].second);
  64. unite (a, b);
  65. }
  66. }
  67. cout <<sum + cost;
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement