ARC044 B - 最短路問題
解法
頂点1が距離0でない場合や、頂点1以外が距離0である場合は、明らかに答えが0になるので処理しておきます。
それ以外のグラフについて考えます。
あらかじめ、距離がの頂点の個数をそれぞれカウントしておきます。
距離がである頂点は、距離がである頂点、である頂点、である頂点に向けて辺を張ることができます。である頂点との辺は、距離がである頂点から張る辺について考慮するときに計算すればよいので、距離がである頂点について考えるとき、の頂点との頂点に向けて張る辺についてのみ計算していきます。
距離の頂点に向けての辺の張り方
距離の頂点を1つ選びます。すると、この頂点は、距離がである頂点のうちすくなくとも1つの頂点に向けて辺が張られていなければなりません。
今選んだ頂点と、個の頂点との辺の張り方は、通りありますが、この中で選んではいけないパターンは、どこにも辺が張られていないパターンただ1つです。
ということで、距離の頂点1つに対し、距離の頂点との辺の張り方は通りとなります。
これが、個の頂点について同じことが考えられるので、最終的に距離の頂点との頂点についての辺の張り方は、
通り
です。距離の頂点同士を結ぶ辺の張り方
距離の頂点同士を結ぶ辺の張り方は、通りです。今回は、全ての辺について、張る、張らないの2パターンを自由に選べます。
ということで、
通りの張り方が存在します。
ということで、の最大値をとして、
が答えとなります。