Submission #1152519

#TimeUsernameProblemLanguageResultExecution timeMemory
1152519kxdOdašiljači (COCI20_odasiljaci)C++20
70 / 70
171 ms33432 KiB
#include <bits/stdc++.h> //#define DEBUG 1106 #define int long long #define ll long long #define ld long double #define pb emplace_back #define p_q priority_queue #define m_p make_pair #define pii pair<int,int> #define endl '\n' #define INIT ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define FOR(i,a,b) for(int i = a; i <= b; i++) #define forn(i,n) for (int i = 0; i < n; i++) #define forn1(i,n) for (int i = 1; i <= n; i++) #define all(x) x.begin(),x.end() #define ft first #define sd second #define lowbit(x) (x&(-x)) #define chmax(x,y) x=max(x,y) #define chmin(x,y) x=min(x,y) #ifdef DEBUG #define debug(x) cout << #x << ": " << x << endl; #else #define debug(x) 1106; #endif using namespace std; const int N = 1e6+5; const int M = 2005; const int inf = 1e9; const int INF = 1e18; const int MOD = 1e9+7; int p[N]; vector<tuple<ld, int, int>> edge; vector<tuple<int, int, int>> pt; int getp(int x) { if(x!=p[x]) p[x] = getp(p[x]); return p[x]; } bool merge(int x, int y) { if(getp(x)==getp(y)) return 0; p[getp(x)]=getp(y); return 1; } ld dis(ld a, ld b, ld c, ld d) { return sqrt((a - c)*(a - c) + (b - d)*(b - d)); } signed main() { INIT #ifdef DEBUG freopen("input.txt", "r", stdin); #endif /////////// int n; cin >> n; forn1(i,n) p[i]=i; forn1(i,n) { int x, y; cin >> x >> y; pt.pb(x, y, i); } forn(i,n) { forn(j,n) { auto [a, b, x] = pt[i]; auto [c, d, y] = pt[j]; edge.pb(dis(a,b,c,d), x, y); } } sort(all(edge)); ld ans = 0.0; int c = 0; for (auto[w, u, v]: edge) { if(merge(u, v)) { chmax(ans, w); c++; } if(c==n-1) break; } cout << fixed << setprecision(9) << ans/2.0; }
#Verdict Execution timeMemoryGrader output
Fetching results...