Submission #448005

#TimeUsernameProblemLanguageResultExecution timeMemory
448005PiejanVDCOdašiljači (COCI20_odasiljaci)C++17
70 / 70
54 ms16868 KiB
#include <bits/stdc++.h> using namespace std; vector<int>parent; int UF(int u) { if(parent[u] == u) return u; return parent[u] = UF(parent[u]); } signed main() { int n; cin>>n; parent.resize(n); for(int i = 0 ; i < n ; i++) parent[i]=i; vector<pair<int64_t,int64_t>>v(n); for(auto &z : v) cin>>z.first>>z.second; priority_queue<pair<long double,pair<int,int>>>pq; for(int i = 0 ; i < n-1 ; i++) { for(int j = i+1 ; j < n ; j++) { long long a = abs(v[i].first-v[j].first),b = abs(v[i].second-v[j].second); long double temp = (sqrt(a*a + b*b))/2; pq.push({-temp,{i,j}}); } } int cnt = 0; long double ans; while(true) { int a = pq.top().second.first, b = pq.top().second.second; int p1 = UF(a), p2 = UF(b); if(p1 != p2) { cnt++; if(cnt == n-1) { ans=-pq.top().first; break; } parent[p1]=p2; } pq.pop(); } cout << fixed << setprecision(8) << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...