結果
問題 | No.94 圏外です。(EASY) |
ユーザー |
![]() |
提出日時 | 2020-09-12 10:32:26 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 850 ms / 5,000 ms |
コード長 | 1,192 bytes |
コンパイル時間 | 183 ms |
コンパイル使用メモリ | 12,928 KB |
実行使用メモリ | 11,136 KB |
最終ジャッジ日時 | 2024-12-31 09:18:53 |
合計ジャッジ時間 | 11,197 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
import sysread=sys.stdin.buffer.readreadline=sys.stdin.buffer.readlinereadlines=sys.stdin.buffer.readlinesclass UnionFind:def __init__(self, n):self.n=nself.par=[-1]*ndef find(self, x):if self.par[x]<0:return xself.par[x]=self.find(self.par[x])return self.par[x]def unite(self, x, y):x=self.find(x)y=self.find(y)if x==y:return Falseif self.par[x]<self.par[y]:x, y=y, xself.par[y]+=self.par[x]self.par[x]=yreturn Truedef same(self, x, y):return self.find(x)==self.find(y)def size(self, x):return -self.par[self.find(x)]n=int(readline())if n==0:print(1)exit()xy=list(map(int, read().split()))x=xy[::2]y=xy[1::2]import itertoolsuf=UnionFind(n)for i, j in itertools.combinations(range(n), 2):if (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])<=100:uf.unite(i, j)mx=0for i, j in itertools.combinations(range(n), 2):d=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])if mx<d and uf.same(i, j):mx=dimport mathprint('{:.7f}'.format(2.0+math.sqrt(mx)))