Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef pair<int, int>pii;
- typedef long long ll;
- vector<pii>adj[10010];
- int vis[1000];
- int prims_algo(int src, int n)
- {
- priority_queue<pii, vector<pii>, greater<pii> >heap;
- int i, r, sum = 0, p;
- for(i = 0; i < n-1; i++)
- {
- int u = src;
- vis[src] = 1;
- int size = adj[u].size();
- for(r = 0; r < size; r++)
- {
- pii top = adj[u][r];
- int v = top.second, w = top.first;
- if(vis[v]==0)
- {
- vis[v] = 1;
- heap.push(top);
- }
- }
- while(vis[src])
- {
- pii top = heap.top(); heap.pop();
- src = top.second, p = top.first;
- }
- sum+=p;
- }
- return sum;
- }
- int main()
- {
- int node, edge;
- cin >> node >> edge;
- while(edge--)
- {
- int u, v, w;
- cin >> u >> v >> w;
- adj[u].push_back(make_pair(w, v));
- adj[v].push_back(make_pair(w, u));
- }
- int cost = prims_algo(0, node);
- printf("The minimum cost is %d\n", cost);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement