AtCoder Beginner Contest 260 F問題 Find 4-cycle
問題
提出解答
問題の概要
頂点数が , 辺の数が の二部グラフ がある. ここで,
この おいて, 長さ のサイクル は存在するか? 存在するならば, を成す頂点の一例を求めよ.
制約
解法
が二部グラフなので, に が存在することと, 以下は同値である.
以下を満たす が存在する: における の共通近傍の頂点数が 以上
実際, の共通近傍で としたとき, が を成す. 逆に が存在する場合は 側の頂点を取ってくればよい.
側の頂点 における次数を としたとき, が共通近傍になるような の取り方は 通りである. そのような頂点対の集合を と書く. このとき, である.
このとき, であるとする. このとき, から合計 個を抜き出すと, 鳩ノ巣原理より, 異なる集合から同じ順序対 を取ることができる. この が から取ってきたとすると, が の共通近傍であるから, が存在することになる.
以上から, のときは, の順に を生成すると, 個目の対を生成した時点で同じ対が発生するので, その対と発生箇所を出力すればよい.
一方で, のときは, を全て生成し, 重複があるかどうかを見ればよい. このとき, 対の数は合計で 個である.
よって, 高々 個の対の生成で判定できることがわかり, 計算量は 時間である.