Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef pair<int, int>pii;
  5. typedef long long ll;
  6. vector<pii>adj[10010];
  7. int vis[1000];
  8.  
  9. int prims_algo(int src, int n)
  10. {
  11. priority_queue<pii, vector<pii>, greater<pii> >heap;
  12. int i, r, sum = 0, p;
  13. for(i = 0; i < n-1; i++)
  14. {
  15. int u = src;
  16. vis[src] = 1;
  17. int size = adj[u].size();
  18. for(r = 0; r < size; r++)
  19. {
  20. pii top = adj[u][r];
  21. int v = top.second, w = top.first;
  22. if(vis[v]==0)
  23. {
  24. vis[v] = 1;
  25. heap.push(top);
  26. }
  27. }
  28. while(vis[src])
  29. {
  30. pii top = heap.top(); heap.pop();
  31. src = top.second, p = top.first;
  32. }
  33. sum+=p;
  34. }
  35. return sum;
  36. }
  37. int main()
  38. {
  39. int node, edge;
  40. cin >> node >> edge;
  41. while(edge--)
  42. {
  43. int u, v, w;
  44. cin >> u >> v >> w;
  45. adj[u].push_back(make_pair(w, v));
  46. adj[v].push_back(make_pair(w, u));
  47. }
  48. int cost = prims_algo(0, node);
  49. printf("The minimum cost is %d\n", cost);
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement