Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- long MSTweight (vector < vector < pair <long,long> > >& g, long& n)
- {
- long mst = 0;
- vector <long> min_e (n, 100001);
- set <pair <long, long> > q;
- min_e[0] = 0;
- q.insert( make_pair(0, 0));
- for (long i = 0; i < n; i++)
- {
- long minV = q.begin() -> second;
- q.erase(q.begin());
- for (long j = 0; j < g[minV].size(); j++)
- {
- long to = g[minV][j].first;
- long cost = g[minV][j].second;
- if (cost < min_e[to])
- {
- q.erase(make_pair(min_e[to], to));
- min_e[to] = cost;
- q.insert(make_pair(min_e[to],to));
- }
- }
- }
- for (long i = 0; i < n; i++)
- {
- cout << min_e[i] << " ";
- mst+=min_e[i];
- }
- return mst;
- }
- int main()
- {
- // freopen("spantree3.in", "r", stdin);
- // freopen("spantree3.out", "w", stdout);
- long numberOfVertex, numberOfEdges, x, y, wg;
- cin >> numberOfVertex >> numberOfEdges;
- vector < vector < pair <long, long> > > vWeightList (numberOfVertex);
- for (long i = 0; i < numberOfEdges; i++)
- {
- cin >> x >> y >> wg;
- vWeightList[x-1].push_back(make_pair(y-1, wg));
- vWeightList[y-1].push_back(make_pair(x-1,wg));
- }
- cout << MSTweight(vWeightList, numberOfVertex);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement