結果
| 問題 |
No.94 圏外です。(EASY)
|
| コンテスト | |
| ユーザー |
kou6839
|
| 提出日時 | 2014-12-10 01:24:34 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 270 ms / 5,000 ms |
| コード長 | 1,417 bytes |
| コンパイル時間 | 2,312 ms |
| コンパイル使用メモリ | 77,668 KB |
| 実行使用メモリ | 43,748 KB |
| 最終ジャッジ日時 | 2024-06-26 07:26:08 |
| 合計ジャッジ時間 | 7,859 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
import java.math.*;
import java.util.*;
public class Main {
static int[] uni;
static int root(int a){
if(uni[a]<0) return a;
return uni[a] = root(uni[a]);
}
static boolean connect(int a,int b){
a = root(a);
b=root(b);
if(a==b) return false;
if(uni[a]>uni[b]){
a ^= b;
b^=a;
a^=b;
}
uni[a]=uni[a]+uni[b];
uni[b]=a;
return true;
}
static boolean isConnect(int a,int b){
return root(a)==root(b);
}
static int size(int a){
return -uni[a];
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] x = new int[n];
int[] y = new int[n];
uni=new int[n];
Arrays.fill(uni, -1);
if(n==0){
System.out.println(1);
return;
}
for(int i=0;i<n;i++){
x[i]=sc.nextInt();
y[i]=sc.nextInt();
}
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(Math.pow(x[i]-x[j], 2)+Math.pow(y[i]-y[j], 2)<=100){
connect(i,j);
}
}
}
double ans=0;
for(int i=0;i<n-1;i++){
for(int j=i+1;j<n;j++){
if(isConnect(i,j)){
ans=Math.max(ans, Math.pow(x[i]-x[j], 2)+Math.pow(y[i]-y[j], 2));
}
}
}
System.out.println(Math.sqrt(ans)+2);
}
}
kou6839