committee - 委員会 (Committee) Editorial by Mitsubachi


人を頂点に見立て、頂点 $s_i$ から頂点 $i$ へ辺を張ったグラフを考えます。制約より、これは頂点 $1$ を根とする根付き木となります。

ここで、以下のような $dp$ を考えます。

  • $dp[i]$ $:=$ 人 $i$ がプロジェクトを行う人間の中でトップ(熱根付き木での深さが一番低い)となるような場合のやる気の合計の最大値
  • 答えは $\max(dp[1],dp[2],\cdots,dp[n])$ です。

    頂点 $i$ が葉の場合、頂点 $i$ の子は存在しない(人 $i$ の部下はいない)ので $dp[i]=a_i$ となります。 そうでない場合、 $dp[i]$ は以下の式のようになります。

  • $dp[i] = a_i + \max(0,dp[x_1]) + \max(0,dp[x_2]) + \cdots$
  • ここで $x_1,x_2,\cdots$ は頂点 $i$ の子である頂点を指します。

    DFSをすることによりこの $dp$ は $O(n)$ で解くことができます。

    posted:
    last update: