# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
768871 | 2023-06-28T19:47:28 Z | MilosMilutinovic | Odašiljači (COCI20_odasiljaci) | C++14 | 52 ms | 8640 KB |
#include <bits/stdc++.h> using namespace std; const int N = 1010; int n, x[N], y[N], rt[N]; struct Event { double r; int i, j; bool const operator < (const Event& ev) { return r < ev.r; } }; int root(int x) { return rt[x] == x ? x : rt[x] = root(rt[x]); } bool unite(int x, int y) { x = root(x); y = root(y); if (x == y) return false; rt[x] = y; return true; } int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d%d", &x[i], &y[i]); } vector<Event> ev; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { double d = (x[i] - x[j]) * 1ll * (x[i] - x[j]) + (y[i] - y[j]) * 1ll * (y[i] - y[j]); d = sqrt(d) / 2; ev.push_back({d, i, j}); } } sort(ev.begin(), ev.end()); if (ev.empty()) { printf("0.000000"); return 0; } int comps = n; for (int i = 1; i <= n; i++) { rt[i] = i; } for (auto& p : ev) { if (unite(p.i, p.j)) { comps--; } if (comps == 1) { printf("%.6lf", p.r); return 0; } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 340 KB | Output is correct |
4 | Correct | 1 ms | 340 KB | Output is correct |
5 | Correct | 1 ms | 468 KB | Output is correct |
6 | Correct | 10 ms | 2504 KB | Output is correct |
7 | Correct | 12 ms | 2504 KB | Output is correct |
8 | Correct | 24 ms | 8580 KB | Output is correct |
9 | Correct | 52 ms | 8640 KB | Output is correct |
10 | Correct | 52 ms | 8640 KB | Output is correct |