Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.19 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6.  
  7. #define MAX(a, b) ((a) > (b) ? (a) : (b))
  8. #define MIN(a, b) ((a) < (b) ? (a) : (b))
  9. #define __PAUSE system("pause");
  10. #define vec std::vector <
  11. #define in std::cin
  12. #define out std::cout
  13.  
  14. typedef long long ll;
  15.  
  16. constexpr ll INF = 1000000000;
  17.  
  18.  
  19. int main() {
  20.  
  21. ll n, m;
  22. in >> n >> m;
  23.  
  24. vec vec ll >> g(n, vec ll > (n, INF));
  25. for (ll i = 0; i < m; i++) {
  26. ll tmp1 = 0, tmp2 = 0, tmp3 = 0;
  27. in >> tmp1 >> tmp2 >> tmp3;
  28. g[tmp1 - 1][tmp2 - 1] = tmp3;
  29. g[tmp2 - 1][tmp1 - 1] = tmp3;
  30. }
  31.  
  32. vec bool> used(n);
  33. vec ll> min_e(n, INF), sel_e(n, -1);
  34. min_e[0] = 0;
  35. ll ans = 0;
  36. for (ll i = 0; i < n; ++i) {
  37. int v = -1;
  38. for (ll j = 0; j < n; ++j)
  39. if (!used[j] && (v == -1 || min_e[j] < min_e[v])) v = j;
  40. if (min_e[v] == INF) {
  41. return 0;
  42. }
  43.  
  44. used[v] = true;
  45. if (sel_e[v] != -1){
  46. ans += g[v][sel_e[v]];
  47. //out << v << " " << sel_e[v] << "\n";
  48. }
  49. for (ll to = 0; to < n; ++to)
  50. if (g[v][to] < min_e[to]) {
  51. min_e[to] = g[v][to];
  52. sel_e[to] = v;
  53. }
  54. }
  55. out << ans;
  56. __PAUSE
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement