Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <queue>
- #include <vector>
- #include <utility>
- using namespace std;
- int main(){
- typedef vector< pair<int, int> > vpii;
- typedef pair<int, int> pii;
- int pts, links;
- cin >> pts >> links;
- vpii *graf = new vpii[pts + 1];
- int a, b, w;
- while (links--){
- cin >> a >> b >> w;
- graf[a].push_back(make_pair(w, b));
- }
- priority_queue<pii, vector<pii>, greater<pii> > kolejka;
- while (!graf[1].empty()){
- kolejka.push(graf[1].back()); //dodaje do kolejki priorytetowej krawędzie
- graf[1].pop_back(); //zdejmuje z grafu wierzchołki
- }
- int rozmiar = 1;
- int waga = 0;
- int doPorzetworzenia;
- while (rozmiar != pts){
- pii sad = kolejka.top(); //zdejmuje wierzchołek do przetworzenia//
- kolejka.pop(); //=====================================//
- waga += sad.first;
- doPorzetworzenia = sad.second;
- while (!graf[doPorzetworzenia].empty()){
- kolejka.push(graf[doPorzetworzenia].back());
- graf[doPorzetworzenia].pop_back();
- }
- rozmiar++;
- }
- cout << waga;
- system("pause");
- }
- /*
- 6 10
- 1 2 2
- 1 6 1
- 1 5 3
- 4 1 5
- 2 6 2
- 2 3 5
- 4 3 4
- 3 5 4
- 4 5 4
- 5 6 3
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement