040 - Get More Money(★7) Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MiB

配点: 7

問題文

AtCoder 共和国には N 軒の家があり、1 から N までの番号が付けられています。

はじめ、家 i の中には、現金 A_i 円と、k_i 本の鍵(それぞれ家 c_{i,1}, c_{i,2}, \dots, c_{i,k_i} の鍵)が置いてあり、家に入ることでこれらを回収できます。 ただし、任意の j (1 \leq j \leq k_i) に対して c_{i,j} \gt i が保証されます。

また、家 i に入るためには、以下の 2 つのことをする必要があります。

  • AtCoder 共和国の中に家 i の鍵があれば、それらをすべて回収した状態にする
  • 料金 W 円を支払う

あなたは AtCoder 共和国の家にある現金を集めることで、できるだけ多くの金額を得ようと考えています。家に入る手順をうまく決めたときに、最大で何円得するかを求めてください。 すなわち、家に入って回収した金額を I 円、家に入るために支払った料金を O 円として、I-O の最大値を求めてください。 ただし、家に入るための費用は必要ならいつでも支払えるものとします。

制約

  • 2 \leq N \leq 100
  • 0 \leq W \leq 10^7
  • 0 \leq A_i \leq 10^7
  • 0 \leq k_i \leq N-i
  • i \lt c_{i,j} \leq N
  • c_{i,j} \neq c_{i,k} (j \neq k)
  • 入力は全て整数

入力

入力は、以下の形式で与えられます。

N W A_1 A_2 \cdots A_N k_1 c_{1,1} c_{1,2} \cdots c_{1,k_1} k_2 c_{2,1} c_{2,2} \cdots c_{2,k_2} \vdots k_N c_{N,1} c_{N,2} \cdots c_{N,k_N} 

出力

最終的に得る金額の最大値を、一行に出力してください。


入力例 1

5 5 5 2 10 3 6 1 3 1 3 0 1 5 0 

出力例 1

2 

1,2,3 にこの順で入るのが最適で、5+2+10-3\times 5=2 円得られます。


入力例 2

6 10 8 6 9 1 2 0 1 3 2 3 4 1 5 1 5 1 6 0 

出力例 2

0 

どの家にも入らないのが最適な場合もあります。


Source Name

「競プロ典型90問」40日目