結果
問題 | No.94 圏外です。(EASY) |
ユーザー |
![]() |
提出日時 | 2014-12-19 19:34:28 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 10 ms / 5,000 ms |
コード長 | 1,661 bytes |
コンパイル時間 | 1,931 ms |
コンパイル使用メモリ | 161,404 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-26 07:26:31 |
合計ジャッジ時間 | 2,299 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
#include<bits/stdc++.h>using namespace std;typedef long long int ll;typedef unsigned long long int llu;typedef pair<int, int> pii;typedef vector<int> vi;typedef vector<pair<int, int> > vii;#define rrep(i, m, n) for(int i=m; i<n; i++)#define erep(i, n) for(int i=1; i<=n; i++)#define rep(i, n) for(int i=0; i<n; i++)#define rrev(i, m, n) for(int i=n-1; i>=m; i--)#define erev(i, n) for(int i=n; i>=1; i--)#define rev(i, n) for(int i=n-1; i>=0; i--)#define EACH(v) (v).begin(), (v).end()#define CNT(a, n, x) (upper_bound(a, a+n, x)-lower_bound(a, a+n, x))#define minup(m, x) (m=min(m, x))#define maxup(m, x) (m=max(m, x))#define mp make_pair#define INF 1000000000#define MOD 1000000009#define EPS 1E-9struct UnionFind{vi data;UnionFind(int size) : data(size, -1) {}bool unite(int x, int y){x = root(x);y = root(y);if(x != y){if(data[y] < data[x]) swap(x, y);data[x] += data[y];data[y] = x;}return x != y;}bool same(int x, int y){ return root(x) == root(y); }int root(int x){ return data[x] < 0 ? x : data[x] = root(data[x]); }int size(int x){ return -data[root(x)]; }};#define MAX_N 1000int n;int x[MAX_N];int y[MAX_N];int res;#define dist(i, j) ((x[j]-x[i])*(x[j]-x[i]) + (y[j]-y[i])*(y[j]-y[i]))bool check(int i, int j) { return dist(i, j) <= 100; }int main(){cin >> n;rep(i, n) cin >> x[i] >> y[i];UnionFind uf(n);rep(i, n) rep(j, n) if(check(i, j)) uf.unite(i, j);rep(i, n) rep(j, n) if(uf.same(i, j)) maxup(res, dist(i, j));printf("%.10f\n", !n ? 1 : (double)sqrt(res) + 2.0);return 0;}