Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include "vector"
- #include "set"
- using namespace std;
- int main() {
- long long n, m;
- cin >> n >> m;
- vector<vector<pair<long long,long long>>> list(n);
- set<pair<long long,long long>> edges;
- long long from, to, cost;
- for (long long i = 0; i < m; ++i) {
- cin >> from >> to >> cost;
- list[from-1].push_back(make_pair(cost, to-1));
- list[to-1].push_back(make_pair(cost, from-1));
- }
- long long res = 0, counter = -1, v;
- vector<bool> used(n, false);
- edges.insert(make_pair(0, list.front().front().second));
- for (long long i = 0; i < n; ++i) {
- if (counter==n-1) break;
- v = edges.begin()->second;
- cost = edges.begin()->first;
- if(used[v]) continue;
- used[v] = true;
- res+=cost;
- counter++;
- edges.erase(edges.begin());
- for (long long j = 0; j < list[v].size(); ++j) {
- if(!used[list[i][j].second]) edges.insert(list[i][j]);
- }
- }
- cout << res;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement