結果

問題 No.168 ものさし
コンテスト
ユーザー noko2250
提出日時 2015-03-20 04:27:50
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
TLE  
実行時間 -
コード長 1,046 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 274 ms
コンパイル使用メモリ 85,676 KB
実行使用メモリ 1,359,992 KB
最終ジャッジ日時 2026-03-18 06:56:34
合計ジャッジ時間 19,568 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 RE * 1 MLE * 1
other AC * 5 WA * 1 RE * 8 TLE * 3 MLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#!/c/Python34/python
# coding: utf-8

from queue import PriorityQueue


def dist(a, b, c, d):
    d = ((a-b)**2 + (c-d)**2)**0.5
    if d-int(d) > 0:
        if int(d) % 10 == 0:
            return int(d)
        else:
            return int(d) + 10 - (int(d) % 10)


def main():
    n = int(input())
    x, y = [0] * n, [0] * n
    for i in range(n):
        [x[i], y[i]] = map(int, input().split())

    L = [[0] * n for _ in range(n)]
    for i in range(n):
        for j in range(i + 1, n):
            L[i][j] = L[j][i] = dist(x[i], x[j], y[i], y[j])

    que = PriorityQueue()
    S, G = 0, n-1
    que.put([0, [S]])
    ans = 10**9
    dm = [10**9] * n

    while not que.empty():
        e, v = que.get()
        t = v[-1]
        dm[t] = min(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()
0