#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const double EPS = 1e-9;
ll calculateSquaredDistance(pii a, pii b) {
ll deltaX = a.first - b.first, deltaY = a.second - b.second;
return deltaX * deltaX + deltaY * deltaY;
}
bool checkIsPossible(vector<pii> &points, double radius) {
int n = points.size();
vector<bool> visited(n);
const function<void(int)> dfs = [&](int node) {
for (int i = 0; i < n; i++) {
if (visited[i])
continue;
double distance = calculateSquaredDistance(points[i], points[node]);
if (4 * radius * radius < distance)
continue;
visited[i] = true;
dfs(i);
}
};
visited[0] = true;
dfs(0);
return count(visited.begin(), visited.end(), true) == n;
}
void solve() {
int n;
cin >> n;
vector<pii> points(n);
for (auto &[x, y] : points)
cin >> x >> y;
double left = 0, right = 1e10;
while (right - left > EPS) {
double mid = left + (right - left) * 0.5;
if (checkIsPossible(points, mid))
right = mid;
else
left = mid;
}
cout << fixed << setprecision(10);
cout << left << '\n';
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |