結果
| 問題 |
No.94 圏外です。(EASY)
|
| コンテスト | |
| ユーザー |
tnakao0123
|
| 提出日時 | 2016-03-12 23:52:55 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 4 ms / 5,000 ms |
| コード長 | 1,779 bytes |
| コンパイル時間 | 818 ms |
| コンパイル使用メモリ | 91,096 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-06-26 07:52:21 |
| 合計ジャッジ時間 | 1,697 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
/* -*- coding: utf-8 -*-
*
* 94.cc: No.94 圏外です。(EASY) - yukicoder
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#include<deque>
#include<algorithm>
#include<numeric>
#include<utility>
#include<complex>
#include<functional>
using namespace std;
/* constant */
const int MAX_N = 1000;
/* typedef */
typedef vector<int> vi;
typedef queue<int> qi;
/* global variables */
int xs[MAX_N], ys[MAX_N];
vi nbrs[MAX_N];
bool used[MAX_N];
/* subroutines */
/* main */
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> xs[i] >> ys[i];
for (int i = 0; i < n; i++)
for (int j = i + 1; j < n; j++) {
int dx = xs[j] - xs[i], dy = ys[j] - ys[i];
if (dx * dx + dy * dy <= 10 * 10) {
nbrs[i].push_back(j);
nbrs[j].push_back(i);
}
}
if (n == 0) {
printf("%.9lf\n", 1.0);
return 0;
}
int maxd2 = 0;
for (int i = 0; i < n; i++)
if (! used[i]) {
used[i] = true;
qi q;
q.push(i);
vi ps;
ps.push_back(i);
while (! q.empty()) {
int u = q.front(); q.pop();
vi &nbru = nbrs[u];
for (vi::iterator vit = nbru.begin(); vit != nbru.end(); vit++) {
int &v = *vit;
if (! used[v]) {
used[v] = true;
q.push(v);
ps.push_back(v);
}
}
}
int pn = ps.size();
for (int j = 0; j < pn; j++) {
int xj = xs[ps[j]], yj = ys[ps[j]];
for (int k = j + 1; k < pn; k++) {
int xk = xs[ps[k]], yk = ys[ps[k]];
int dx = xk - xj, dy = yk - yj;
int d2 = dx * dx + dy * dy;
if (maxd2 < d2) maxd2 = d2;
}
}
}
printf("%.9lf\n", sqrt((double)maxd2) + 2.0);
return 0;
}
tnakao0123