Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <iostream>
  2. #include "vector"
  3. #include "set"
  4. using namespace std;
  5. int main() {
  6.     long long n, m;
  7.     cin >> n >> m;
  8.     vector<vector<pair<long long,long long>>> list(n);
  9.     set<pair<long long,long long>> edges;
  10.     long long from, to, cost;
  11.     for (long long i = 0; i < m; ++i) {
  12.         cin >> from >> to >> cost;
  13.         list[from-1].push_back(make_pair(cost, to-1));
  14.         list[to-1].push_back(make_pair(cost, from-1));
  15.     }
  16.  
  17.     long long res = 0, counter = -1, v;
  18.     vector<bool> used(n, false);
  19.     edges.insert(make_pair(0, list.front().front().second));
  20.  
  21.     for (long long i = 0; i < n; ++i) {
  22.         if (counter==n-1) break;
  23.         v = edges.begin()->second;
  24.         cost = edges.begin()->first;
  25.         if(used[v]) continue;
  26.         used[v] = true;
  27.         res+=cost;
  28.         counter++;
  29.         edges.erase(edges.begin());
  30.         for (long long j = 0; j < list[v].size(); ++j) {
  31.             if(!used[list[i][j].second]) edges.insert(list[i][j]);
  32.         }
  33.     }
  34.  
  35.     cout << res;
  36.  
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement