結果
| 問題 |
No.788 トラックの移動
|
| コンテスト | |
| ユーザー |
nephrologist
|
| 提出日時 | 2020-02-26 21:49:17 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,140 bytes |
| コンパイル時間 | 214 ms |
| コンパイル使用メモリ | 12,416 KB |
| 実行使用メモリ | 147,528 KB |
| 最終ジャッジ日時 | 2024-10-13 15:31:15 |
| 合計ジャッジ時間 | 6,599 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | TLE * 1 -- * 13 |
ソースコード
#dijkstra?
import sys
input=sys.stdin.readline
from heapq import heappop, heappush, heapify
n,m,l=map(int,input().split())
T=list(map(int,input().split()))
graph=[[] for _ in range(n+1)]
dist=[[10**10]*(n+1) for _ in range(n+1)]
for _ in range(m):
a,b,c=map(int,input().split())
graph[a].append((c,b))
graph[b].append((c,a))
def dij(s,graph,dist):
used=[False]*(n+1)
used[s]=True
dist[s][s]=0
edgelist=[]
for es in graph[s]:
heappush(edgelist,es)
while edgelist:
kyori,ten=heappop(edgelist)
if used[ten]==True:
continue
dist[s][ten]=kyori
used[ten]=True
for es in graph[ten]:
if used[es[1]]==False:
heappush(edgelist,(es[0]+dist[s][ten], es[1]))
return dist
ans=[]
for i in range(1,n+1):
dist=dij(i, graph,dist)
for first in range(1,n+1):
a=dist[l][first]
for p in range(1,n+1):
temp=a
temp+=dist[first][p]
for j in range(n):
cnt=T[j]
if j == first-1:
cnt-=1
temp+=2*cnt*dist[p][j+1]
ans.append(temp)
print(min(ans))
nephrologist