結果
問題 |
No.417 チューリップバブル
|
ユーザー |
![]() |
提出日時 | 2018-04-30 09:48:41 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 115 ms / 2,000 ms |
コード長 | 567 bytes |
コンパイル時間 | 163 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 75,776 KB |
最終ジャッジ日時 | 2024-06-27 23:47:58 |
合計ジャッジ時間 | 4,018 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 40 |
ソースコード
n, m = map(int, input().split()) U = [int(input()) for _ in range(n)] G = [[] for _ in range(n)] for _ in range(n-1): a, b, c = map(int, input().split()) G[a].append((b, c)) G[b].append((a, c)) def dfs(u, p): cur = {0 : U[u]} for v, c in G[u]: if v == p: continue nxt = list(dfs(v, u).items()) for t1, x in list(cur.items()): for t2, y in nxt: t = t1+t2+c*2 if t <= m: cur[t] = max(cur.get(t, 0), x+y) return cur print(max(dfs(0, 0).values()))