Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <math.h>
- using namespace std;
- const double MAX = 10000001;
- int n, m, k, l;
- vector<pair <int, int>> g;
- vector<double> minimum;
- vector<bool> used;
- double distance(int a, int b){
- double x = g[a].first - g[b].first;
- double y = g[a].second - g[b].second;
- return sqrt(x*x + y*y);
- }
- int main() {
- cin >> n;
- minimum.resize(n); used.resize(n);
- for (int i = 0; i < n; i++){
- cin >> k >> l;
- g.push_back(make_pair(k, l));
- }
- for(int i = 0; i < n; i++){
- minimum[i] = MAX;
- used[i] = false;
- }
- minimum[0] = 0;
- double len = 0;
- for (int i = 0; i < n; i++){
- int v = -1;
- for (int j = 0; j < n; j++){
- if (!used[j] && ((v == -1) || (minimum[j] < minimum[v]))){
- v = j;
- }
- }
- used[v] = true;
- len += minimum[v];
- for (int j = 0; j < n; j++){
- double dist = distance(v, j);
- minimum[j] = min(dist, minimum[j]);
- }
- }
- cout << len;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement