結果
| 問題 |
No.3013 ハチマキ買い星人
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-05-31 03:29:10 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,485 ms / 2,000 ms |
| コード長 | 729 bytes |
| コンパイル時間 | 777 ms |
| コンパイル使用メモリ | 82,048 KB |
| 実行使用メモリ | 159,912 KB |
| 最終ジャッジ日時 | 2025-05-31 03:29:45 |
| 合計ジャッジ時間 | 30,567 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 45 |
ソースコード
import heapq
N,M,P,Y=(int(x) for x in input().split())
d={}
for i in range(1,N+1):
d[i] = []
for i in range(M):
A,B,C=(int(x) for x in input().split())
d[A].append([B,C])
d[B].append([A,C])
shop={}
for i in range(P):
D,E=(int(x) for x in input().split())
shop[D] = E
inf=float("inf")
money_lose=[inf]*N
money_lose[0]=0
L=[[0,1]]
heapq.heapify(L)
while L:
a=heapq.heappop(L)
c=a[0]
u=a[1]
if c > money_lose[u-1]:
continue
for v, cost in d[u]:
if money_lose[v-1] > c + cost:
money_lose[v-1] = c + cost
heapq.heappush(L,[c+cost, v])
ans=0
for i in range(N):
if i+1 in shop:
ans = max(ans, (Y-money_lose[i])//shop[i+1])
print(ans)