結果

問題 No.3283 Labyrinth and Friends
ユーザー timi
提出日時 2025-09-27 10:15:01
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 811 bytes
コンパイル時間 379 ms
コンパイル使用メモリ 82,240 KB
実行使用メモリ 78,320 KB
最終ジャッジ日時 2025-09-27 10:15:07
合計ジャッジ時間 5,342 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1 WA * 1
other AC * 16 WA * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

N,X=map(int, input().split())
D=[[] for i in range(N)] 

A=list(map(int, input().split()))
B=[]
for i in range(1,N):
  p=A[i-1]
  c,s=map(int, input().split())
  D[p-1].append(i)
  B.append((p-1,c,s))
  
C=[]
from collections import deque
d=deque()
d.append(0)
while d:
  now=d.popleft()
  for nex in D[now]:
    C.append(nex)
    d.append(nex)

dp=[{} for i in range(N)]
for i in range(N):
  dp[i][0]=0
  
for i in range(N-1):
  a,b,c=B[i]
  if c not in dp[i+1]:
    dp[i+1][c]=b 
  
for now in C[::-1]:
  p,_,_=B[now-1]
  E={}
  for d in dp[now]:
    for dd in dp[p]:
      if dd==0 and p!=0:
        continue
      c=d+dd;cc=dp[now][d]+dp[p][dd]
      if c not in E:
        E[c]=10**15
      E[c]=min(E[c],cc)
  E[0]=0
  dp[p]=E 
  
ans=10**15
for d in dp[0]:
  if d>=X:
    ans=min(ans,dp[0][d])
print(ans)
0