結果
| 問題 | 
                            No.17 2つの地点に泊まりたい
                             | 
                    
| コンテスト | |
| ユーザー | 
                             mastersatoshi
                         | 
                    
| 提出日時 | 2017-06-23 11:47:55 | 
| 言語 | Python2  (2.7.18)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 31 ms / 5,000 ms | 
| コード長 | 833 bytes | 
| コンパイル時間 | 93 ms | 
| コンパイル使用メモリ | 6,912 KB | 
| 実行使用メモリ | 6,400 KB | 
| 最終ジャッジ日時 | 2024-10-15 01:41:58 | 
| 合計ジャッジ時間 | 1,378 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| other | AC * 27 | 
ソースコード
#import pdb; pdb.set_trace()
def main():
    n = int(raw_input())
    s = []
    for i in range(n):
        s.append(int(raw_input()))
    m = int(raw_input())
    
    dq = [[float("inf") for i in range(n)] for j in range(n)]
    for i in range(m):
        (a,b,c) = map(int, raw_input().split())
        dq[a][b] = c
        dq[b][a] = c
    for k in range(n):
        for i in range(n):
            for j in range(n):
                if dq[i][j] > dq[i][k] + dq[k][j]:
                    dq[i][j] = dq[i][k] + dq[k][j]
    minimum = float("inf")
    
    for i in xrange(1, n - 1):
        for j in xrange(1, n - 1):
            if i == j:
                continue
            
            minimum = min(minimum, dq[0][i] + dq[i][j] + dq[j][n - 1] + s[i] + s[j])
    
    print minimum
    
if __name__ == '__main__':
    main()
            
            
            
        
            
mastersatoshi