제출 #1152272

#제출 시각아이디문제언어결과실행 시간메모리
1152272siewjhOdašiljači (COCI20_odasiljaci)C++20
70 / 70
95 ms17000 KiB
#include <bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; const int MAXN = 1005; int p[MAXN], sz[MAXN]; ll sq(ll v){ return v * v; } ld dist(ll x1, ll y1, ll x2, ll y2){ return sqrt((ld)(sq(x2 - x1) + sq(y2 - y1))); } int root(int x){ if (p[x] == -1) return x; else return p[x] = root(p[x]); } int join(int ra, int rb){ if (sz[ra] > sz[rb]) swap(ra, rb); p[ra] = rb; sz[rb] += sz[ra]; return sz[rb]; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int nums; cin >> nums; vector<pair<ll, ll>> pos(nums); for (int i = 0; i < nums; i++){ ll x, y; cin >> x >> y; pos[i] = {x, y}; } vector<tuple<ld, int, int>> elist; for (int i = 0; i < nums; i++) for (int j = 0; j < i; j++){ ll x1, y1, x2, y2; tie(x1, y1) = pos[i]; tie(x2, y2) = pos[j]; elist.push_back({dist(x1, y1, x2, y2), i, j}); } sort(elist.begin(), elist.end()); for (int i = 0; i < nums; i++){ p[i] = -1; sz[i] = 1; } for (auto &[d, i, j] : elist){ int ri = root(i), rj = root(j); if (ri == rj) continue; if (join(ri, rj) == nums){ printf("%.7Lf", d / 2); break; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...