結果
| 問題 |
No.848 なかよし旅行
|
| コンテスト | |
| ユーザー |
chocorusk
|
| 提出日時 | 2019-07-04 15:31:45 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 635 ms / 2,000 ms |
| コード長 | 822 bytes |
| コンパイル時間 | 468 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 103,304 KB |
| 最終ジャッジ日時 | 2024-11-08 00:48:27 |
| 合計ジャッジ時間 | 7,880 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 26 |
ソースコード
import heapq
import sys
n, m, p, q, t=map(int, input().split())
p-=1
q-=1
g=[[] for i in range(n)]
for i in range(m):
a, b, c=map(int, input().split())
a-=1
b-=1
g[a].append((c, b))
g[b].append((c, a))
def dijkstra(s):
d=[10**18]*n
d[s]=0
que=[]
heapq.heappush(que, (0, s))
while len(que)!=0:
u=heapq.heappop(que)
x=u[1]
if d[x]<u[0]:
continue
for v in g[x]:
y=v[1]
if d[y]>d[x]+v[0]:
d[y]=d[x]+v[0]
heapq.heappush(que, (d[y], y))
return d
d1=dijkstra(0)
dp=dijkstra(p)
dq=dijkstra(q)
if d1[p]+dp[q]+d1[q]<=t:
print(t)
sys.exit()
elif max(d1[p]*2, d1[q]*2)>t:
print(-1)
sys.exit()
ans=0
for i in range(n):
for j in range(n):
if d1[i]+max(dp[i]+dp[j], dq[i]+dq[j])+d1[j]<=t:
ans=max(ans, t-max(dp[i]+dp[j], dq[i]+dq[j]))
print(ans)
chocorusk