Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. long MSTweight (vector < vector < pair <long,long> > >& g, long& n)
  6. {
  7. long mst = 0;
  8. vector <long> min_e (n, 100001);
  9. set <pair <long, long> > q;
  10. min_e[0] = 0;
  11. q.insert( make_pair(0, 0));
  12. for (long i = 0; i < n; i++)
  13. {
  14. long minV = q.begin() -> second;
  15. q.erase(q.begin());
  16.  
  17. for (long j = 0; j < g[minV].size(); j++)
  18. {
  19. long to = g[minV][j].first;
  20. long cost = g[minV][j].second;
  21. if (cost < min_e[to])
  22. {
  23. q.erase(make_pair(min_e[to], to));
  24. min_e[to] = cost;
  25. q.insert(make_pair(min_e[to],to));
  26. }
  27. }
  28. }
  29. for (long i = 0; i < n; i++)
  30. {
  31. cout << min_e[i] << " ";
  32. mst+=min_e[i];
  33. }
  34. return mst;
  35. }
  36.  
  37. int main()
  38. {
  39. // freopen("spantree3.in", "r", stdin);
  40. // freopen("spantree3.out", "w", stdout);
  41. long numberOfVertex, numberOfEdges, x, y, wg;
  42. cin >> numberOfVertex >> numberOfEdges;
  43.  
  44. vector < vector < pair <long, long> > > vWeightList (numberOfVertex);
  45.  
  46. for (long i = 0; i < numberOfEdges; i++)
  47. {
  48. cin >> x >> y >> wg;
  49. vWeightList[x-1].push_back(make_pair(y-1, wg));
  50. vWeightList[y-1].push_back(make_pair(x-1,wg));
  51. }
  52.  
  53. cout << MSTweight(vWeightList, numberOfVertex);
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement