結果
| 問題 |
No.788 トラックの移動
|
| コンテスト | |
| ユーザー |
nephrologist
|
| 提出日時 | 2020-02-26 22:07:15 |
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,168 bytes |
| コンパイル時間 | 170 ms |
| コンパイル使用メモリ | 12,544 KB |
| 実行使用メモリ | 148,040 KB |
| 最終ジャッジ日時 | 2024-10-13 15:31:43 |
| 合計ジャッジ時間 | 6,517 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | -- * 3 |
| other | TLE * 1 -- * 13 |
ソースコード
#dijkstra?
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=10**20
for i in range(1,n+1):
dist=dij(i, graph,dist)
for p in range(1,n+1):
ouhuku=0
for j in range(n):
ouhuku+=2*T[j]*dist[p][j+1]
for first in range(1,n+1):
if T[first-1]==0:
continue
if first==p:
temp=ouhuku+dist[l][first]
else:
temp=ouhuku+dist[l][first]+dist[first][p]-(dist[p][first]*2)
ans=min(ans,temp)
print(ans)
nephrologist