燃やす埋める(Project Selection Problem)の練習問題についての解説です。
問題はこちら
ポイント
問題概要

頂点

辺の有向グラフが与えられます.

番目の辺は頂点

から頂点

へ向かう有向辺です.各頂点には整数

が書かれており,各頂点ははじめ白で塗られています.
次の操作を順に行うとき,黒で塗られている頂点に書かれた整数の和の最大値を求めてください.
操作

:

個以上の頂点を選択し,選択した頂点からたどり着ける頂点を黒で塗る.
操作

:

個以上の頂点を選択し,選択した頂点からたどり着ける頂点を白で塗る。
解説
燃やす埋める問題に関する基礎知識は以下の記事を参考にしてください.
kanpurin.hatenablog.com操作1のみしか行わない場合
操作

のみしか行わない場合は
ARC085 E - MULと同じようにして解くことができます.
操作

を行った後に,黒で塗られた頂点から白で塗られた頂点へ向かう有向辺が存在してはいけません(黒で塗られた頂点から辿りつける頂点は黒で塗られているはずなので).したがって,有向辺

すべてについて頂点

が黒,頂点

が白で塗られている場合に

のコストをかけるようにすればよいです.
強連結成分はすべて同じ色になりますが,わざわざ強連結成分分解する必要はありません.
操作2も行う場合
操作

で白に塗るのではなく赤に塗ると考えます.すると,先程と同様に考えることができ,黒

白・赤

白・赤

黒,の頂点が存在する場合に

のコストをかけるようにすればよいです.コストの表とグラフは以下のようになります.

負辺は以下の記事に従って除去してください.最大流を求めるアルゴリズムとしてPush-Relabelを用いると
で求められます.Dinicも速いので間に合います.
kanpurin.hatenablog.com
他の燃やす埋める問題(Project Selection Problem)の例題については以下にまとめています.
kanpurin.hatenablog.com
提出プログラム
https://mojacoder.app/users/_kanpurin_/problems/project_selection_problem004/submissions/816c461e-5df1-4951-84d5-232061020e91感想

タイプの問題は気付きにくい印象がある。