結果

問題 No.168 ものさし
ユーザー takakin
提出日時 2020-06-15 22:02:55
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
AC  
実行時間 1,084 ms / 2,000 ms
コード長 896 bytes
コンパイル時間 86 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 76,800 KB
最終ジャッジ日時 2024-07-03 11:35:09
合計ジャッジ時間 8,930 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 19
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

import sys,heapq
input = sys.stdin.buffer.readline
n=int(input())
par=[-1]*n
def find(x):
if par[x]<0:
return x
else:
par[x]=find(par[x])
return par[x]
def unite(x,y):
x=find(x)
y=find(y)
if x==y:
return False
else:
if par[x]>par[y]:
x,y=y,x
par[x]+=par[y]
par[y]=x
return True
def same(x,y):
return find(x)==find(y)
def size(x):
return -par[find(x)]
import heapq
XY=[]
for _ in range(n):
XY.append(tuple(int(i) for i in input().split()))
Q=[]
def f(x1,y1,x2,y2):
dist2=(x2-x1)**2+(y2-y1)**2
dist=int(dist2**0.5)
while dist**2<dist2:
dist+=1
return ((dist-1)//10+1)*10
for i in range(n-1):
for j in range(i+1,n):
heapq.heappush(Q,(f(XY[i][0],XY[i][1],XY[j][0],XY[j][1]),i,j))
ans=0
while True:
d,i,j=heapq.heappop(Q)
if not same(i,j):
ans=max(ans,d)
unite(i,j)
if same(0,n-1):
break
print(ans)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0