Official

054 - Takahashi Number(★6) Editorial by Kazu1998k


解法0 (TLE解法)

まず, 素直に考えると, 以下のようにして解くことができると考えられる.

グラフ \(G=(V(G) , E(G))\) を以下のようにして構成する: 頂点集合 \(V(G)\)\(1\) 以上 \(N\) 以下からなる整数全体の集合, 辺集合 \(E(G)\) は以下のようにして定義される集合である.

\[ij \in E(G) \iff 研究者 i と研究者 j が一緒に執筆した共著が存在する\]

このとき, 研究者 \(i\) の高橋数が存在すれば, その値はグラフ \(G\) における頂点 \(1\) と頂点 \(i\) との距離と一致する. そして, これは幅優先探索 (BFS) で求めることが可能である.

しかし, このグラフ \(G\) の構成においては, \(N\) 人の研究者が合同で共著を執筆した場合, \(G\)\(N\) 頂点の完全グラフとなるため, 辺の本数は \(\Theta(N^2)\) なる. よって, グラフの構成自体で計算量が \(\Theta(N^2)\) となり,  実行時間制限に間に合わない.

解法1 (必要になったら辺を足す)

解法 0 における幅優先探索において, 実際に距離の計算に関係があるのは高々 \(N-1\) 本である (BFS木). 実際に距離の計算に寄与する可能性がある辺のみを見れば良い.

では, どのような辺が寄与する可能性があるのだろうか? 結論から言うと, 寄与する可能性があるのは, 各共著における, 一番最初に深さ優先探索のキューに加えられた頂点 \(i\) と (その共著を執筆した) のそれ以外の全ての頂点達である. よって, 各研究者がどの共著に関わったかを記録することにより, 頂点 \(i\) を取り出した際, 1回でも調べた共著に関する関係はクローズすることによって, 計算量を \(K_{\rm sum}:=\sum_{i=1}^M K_i\) とすることにより, \(O(N+M+K_{\rm sum})\) で求めることができる.

解法2 (超頂点を追加する)

また, 解法 1を発展させることで, 以下のような解法もある.

グラフ \(H=(V(H), E(H))\) を, 研究者と共著論文を頂点に持つ \((N+M)\) 頂点からなるグラフとする. ただし, 以下では \(k\) 番目の共著を \([k]\) と書くことにする. このとき, \(H\) の辺を

\[i [k] \in E(H) \iff 研究者 i は共著 [k] に関わっている\]

とする. なお, このグラフ \(H\) は二部グラフである. このとき, 2頂点 \(u,v \in V(H)\) 間の距離を \(\operatorname{dist}(u,v)\) と書くことにすると, 研究者 \(i\) の高橋数は (存在すれば) \(\frac{1}{2} \operatorname{dist}(1,i)\) である.

posted:
last update: