結果
| 問題 |
No.168 ものさし
|
| コンテスト | |
| ユーザー |
noko2250
|
| 提出日時 | 2015-03-20 12:25:12 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,076 bytes |
| コンパイル時間 | 148 ms |
| コンパイル使用メモリ | 82,036 KB |
| 実行使用メモリ | 115,852 KB |
| 最終ジャッジ日時 | 2024-06-28 23:47:09 |
| 合計ジャッジ時間 | 6,617 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 4 |
| other | TLE * 1 -- * 18 |
ソースコード
#!/c/Python34/python
# coding: utf-8
from queue import Queue
from decimal import *
def dist(i, j, xy):
x1, y1 = xy[i]
x2, y2 = xy[j]
d = Decimal((x1-x2)**2+(y1-y2)**2).sqrt()
if d - int(d) > 0:
return int(d)+10-(int(d) % 10)
else:
if int(d) % 10 == 0:
return int(d)
else:
return int(d)+10-(int(d) % 10)
def main():
n = int(input())
xy = [list(map(int, input().split())) for _ in range(n)]
L = [[dist(i, j, xy) for i in range(n)] for j in range(n)]
que = Queue()
inf = 10**19
S, G = 0, n-1
que.put([0, [S]])
ans = inf
dm = [inf] * n
while not que.empty():
e, v = que.get()
e, t = int(e), int(v[-1])
if dm[t] <= e:
continue
dm[t] = e
if t == G:
ans = min(e, ans)
continue
for i in range(n):
if i == t or dm[i] <= max(L[t][i], e):
continue
que.put([max(L[t][i], e), v+[i]])
print(ans)
return
if __name__ == '__main__':
main()
noko2250