結果
| 問題 | No.17 2つの地点に泊まりたい | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2023-07-08 17:53:25 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                RE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 944 bytes | 
| コンパイル時間 | 207 ms | 
| コンパイル使用メモリ | 82,788 KB | 
| 実行使用メモリ | 77,696 KB | 
| 最終ジャッジ日時 | 2024-07-22 13:21:20 | 
| 合計ジャッジ時間 | 3,537 ms | 
| ジャッジサーバーID (参考情報) | judge4 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 17 RE * 10 | 
ソースコード
from itertools import product
def main():
    n = int(input())
    ss = [int(input()) for _ in range(n)]
    m = int(input())
    abcs = [list(map(int, input().split())) for _ in range(m)]
    print(stay2(n, ss, abcs))
def stay2(n, ss, abcs):
    return min(fullSearch(n, ss, warshallFloyd(n, abcs)))
def fullSearch(n, ss, g):
    res = []
    for s1 in range(1, n - 1):
        for s2 in range(1, n - 1):
            if s1 != s2:
                res.append(g[(0, s1)] + g[(s1, s2)] + g[(s2, n - 1)] + ss[s1] + ss[s2])
    return res
def warshallFloyd(n, abcs):
    g0 = {}
    for a, b, c in abcs:
        g0[(a, b)] = c
        g0[(b, a)] = c
    for k in range(n):
        for i in range(n):
            for j in range(n):
                if (i, k) in g0 and (k, j) in g0:
                    if (i, j) not in g0 or g0[(i, j)] > g0[(i, k)] + g0[(k, j)]:
                        g0[(i, j)] = g0[(i, k)] + g0[(k, j)]
    return g0
main()
            
            
            
        