Advertisement
Guest User

Alg

a guest
Oct 23rd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <math.h>
  4.  
  5. using namespace std;
  6.  
  7. const double MAX = 10000001;
  8.  
  9. int n, m, k, l;
  10. vector<pair <int, int>> g;
  11. vector<double> minimum;
  12. vector<bool> used;
  13.  
  14. double distance(int a, int b){
  15. double x = g[a].first - g[b].first;
  16. double y = g[a].second - g[b].second;
  17. return sqrt(x*x + y*y);
  18. }
  19.  
  20. int main() {
  21.  
  22. cin >> n;
  23. minimum.resize(n); used.resize(n);
  24. for (int i = 0; i < n; i++){
  25. cin >> k >> l;
  26. g.push_back(make_pair(k, l));
  27. }
  28.  
  29. for(int i = 0; i < n; i++){
  30. minimum[i] = MAX;
  31. used[i] = false;
  32. }
  33. minimum[0] = 0;
  34.  
  35. double len = 0;
  36. for (int i = 0; i < n; i++){
  37. int v = -1;
  38. for (int j = 0; j < n; j++){
  39. if (!used[j] && ((v == -1) || (minimum[j] < minimum[v]))){
  40. v = j;
  41. }
  42. }
  43. used[v] = true;
  44. len += minimum[v];
  45. for (int j = 0; j < n; j++){
  46. double dist = distance(v, j);
  47. minimum[j] = min(dist, minimum[j]);
  48. }
  49. }
  50. cout << len;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement