ABC108 D問題 : All Your Paths are Different Lengths
問題. All Your Paths are Different Lengths
整数 が与えられるので次を満たす多重有向グラフ とその弧重み を構成せよ.
・ ,かつ,頂点のラベルは互いに異なり
・ ,かつ,任意の弧 に対して,
・ 任意の弧 に対して,
・頂点1から までの互いに異なるパスはちょうど 個あり,それらの長さは
制約:
解法. 構築ゲー
まず, を満たす を見つける.このとき,パスの長さが を表す有向グラフを構成する.以下では分かりやすさのために, として説明する. のとき となる.
頂点数 で,各 に対して,頂点 から頂点 への重みが と の異なる弧を2つ加える.
このとき,パスの長さは まで表現可能であるので,この有向グラフに弧を加えて を表現可能にすることを考える. を とする. を2進数表現で考えて上位ビットから順番に見ていく.初めて1が立っているのが ビット目のとき,頂点 から頂点 へ重さ の孤を加える.このとき,頂点1から頂点 を通ってその弧を通ることによって が表現可能となる.すなわち, までが表現可能となるので,残りの までを表現可能にすることを考える. の次に1が立っているビットが ビット目のとき,頂点 から頂点 へ重さ の弧を加える.このとき,頂点1から頂点 を通りその弧を通ることによって, まで表現可能となる.以下同様に のビットが1となる 番目の場所 に対して頂点 から頂点 へ重さ の弧を加えると まで表現可能なグラフが構成できる.
以上のようにして構成できた有向グラフの頂点数は から高々20となる.また,頂点 から頂点 へ張られる弧の数は高々3なので,弧数は高々 となる.
計算時間:
まとめ
構築ゲーは初めてだったので楽しかった.頂点数を抑えるのが難しかった.
参考文献
- ARC102解説(2018年9月2日アクセス)