結果
| 問題 |
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()