各ステージ間の関係をグラフ化して考えてみましょう。ステージ を攻略するとステージ が簡単になる、という条件を の有向辺として有向グラフの問題に帰着させます。 この問題で与えられるグラフはどんな形をしているのでしょうか?何個か実際にグラフを作って試してみると、このグラフは必ず各連結成分ごとに閉路をもつことが分かります。具体的には、各連結成分ごとに以下の二つのどちらかの構造を取ります。
それぞれの構造について、答えを考えます。
閉路内のどのステージ(頂点)を選んでも、選んだステージ以外のステージは有向辺を順に辿っていくことで簡単になります。
よって、閉路内のどのステージ(頂点)の難易度を としたとき、答えは となります。
閉路に向かうような有向辺からなる構造において、このグラフは必ず入次数 の頂点(ステージ)を持ちます。 これらのステージは他のどのステージを攻略しても簡単になることがないため、通常の状態で攻略する必要があります。
一方、それ以外のステージは入次数 の頂点(ステージ)から有向辺を辿るようにして攻略していくことで必ず簡単になります。
よって、入次数 の頂点(ステージ)の難易度を としたとき、答えは となります。
問題の答えは各連結成分における答えの値の和です。これは入次数 の頂点からdfsまたはbfsを行い(Bの構造を全探索)、さらにdfsまたはbfsで通らなかった頂点についてdfsまたはbfsを行う(Aの構造を全探索)ことで で求めることができます。
この問題で与えられるような 頂点 辺グラフを、Functional Graph(有向なもりグラフ) と呼びます。