Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <vector>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- double inf = 40000;
- double SpanTree(const vector<pair<long long, long long>> &vert)
- {
- double dist = 0;
- vector<int> used(vert.size(), 0);
- vector<double> mindist(vert.size(), inf);
- mindist[0] = 0;
- int v = 0;
- for (int i = 0; i < vert.size(); i++)
- {
- int minind = v;
- double tmp = inf;
- used[v] = 1;
- dist += mindist[v];
- for (int j = 0; j < vert.size(); j++)
- {
- if (!used[j])
- {
- double wayvj = sqrt(pow(vert[v].first - vert[j].first, 2) + pow(vert[v].second - vert[j].second, 2));
- if (wayvj < mindist[j])
- mindist[j] = wayvj;
- if (mindist[j] < tmp)
- {
- minind = j;
- tmp = mindist[j];
- }
- }
- }
- v = minind;
- }
- return dist;
- }
- int main()
- {
- ifstream fcin("spantree.in");
- ofstream fcout("spantree.out");
- int n;
- fcin >> n;
- vector<pair<long long, long long>> vert(n);
- for (int i = 0; i < n; i++)
- fcin >> vert[i].first >> vert[i].second;
- fcout << fixed << setprecision(6);
- fcout << SpanTree(vert);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement