atcoder#ARC096D. [ARC096F] Sweet Alchemy

[ARC096F] Sweet Alchemy

配点 : 900900

問題文

パティシエの赤木さんは、「お菓子の素」という粉のみを材料として NN 種類のドーナツを作ることができます。これらのドーナツはドーナツ 11、ドーナツ 22......、ドーナツ NN と呼ばれます。ドーナツ ii (1iN)(1 \leq i \leq N)11 個作るには、お菓子の素 mim_i グラムを消費する必要があります。なお、0.50.5 個など整数でない個数のドーナツを作ることはできません。

これらのドーナツのレシピは、ドーナツ 11 のレシピから改変を繰り返して開発されたものです。 具体的には、ドーナツ ii (2iN)(2 \leq i \leq N) のレシピはドーナツ pip_i (1pi<i)(1 \leq p_i < i) のレシピを直接改変したものです。

いま、赤木さんはお菓子の素を XX グラム持っています。これを使って、今夜のパーティーに向けて可能な限りたくさんのドーナツを作ることにしました。ただし、来客の好みは様々なので、次の条件を守ることにしました。

  • ドーナツ ii (1iN)(1 \leq i \leq N) を作る個数を cic_i とする。2iN2 \leq i \leq N であるようなどの整数 ii に対しても、cpicicpi+Dc_{p_i} \leq c_i \leq c_{p_i} + D となるように作る。ここで、DD はあらかじめ決まった値である。

このとき、最大で何個のドーナツを作ることができるでしょうか?お菓子の素を使い切る必要はありません。

制約

  • 2N502 \leq N \leq 50
  • 1X1091 \leq X \leq 10^9
  • 0D1090 \leq D \leq 10^9
  • 1mi1091 \leq m_i \leq 10^9 (1iN)(1 \leq i \leq N)
  • 1pi<i1 \leq p_i < i (2iN)(2 \leq i \leq N)
  • 入力中の値はすべて整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN XX DD

m1m_1

m2m_2 p2p_2

::

mNm_N pNp_N

出力

条件を守って作ることのできるドーナツの最大の個数を出力せよ。

3 100 1
15
10 1
20 1
7

100100 グラムのお菓子の素があり、赤木さんは 33 種類のドーナツを作ることができ、守るべき条件は c1c2c1+1c_1 \leq c_2 \leq c_1 + 1c1c3c1+1c_1 \leq c_3 \leq c_1 + 1 です。ドーナツ 1122 個、ドーナツ 2233 個、ドーナツ 3322 個作るのが最適です。

3 100 10
15
10 1
20 1
10

入力例 1 からお菓子の素の量やドーナツのレシピそのものは変わっていませんが、最後の条件が緩くなっています。この場合、ドーナツ 22 だけを 1010 個作るのが最適です。このように、必ずしもすべての種類のドーナツを作らなくても構いません。

5 1000000000 1000000
123
159 1
111 1
135 3
147 3
7496296