Same Distance Different Path

2 secs 1024 MB
RedSpica's icon RedSpica

11からNNへの単純パスの本数をPNP_Nと表すことにします.

(N1)×max1i,jN(Di,j)<PN(N-1) \times \max_{1 \leq i,j \leq N} (D_{i,j}) < P_Nのとき, 鳩ノ巣原理より条件を満たすパスの組が必ず存在することが言えます.

よってこれ以降は(N1)×max1i,jN(Di,j)PN(N-1) \times \max_{1 \leq i,j \leq N} (D_{i,j}) \geq P_Nとします.

次にPNP_NNNを用いて実際に表すと以下の式となります.

  • PN=k=0N2N2Ck×k!=k=0N2N2PkP_N = \sum^{N-2}_{k=0} {}_{N-2}C_{k} \times k! = \sum^{N-2}_{k=0} {}_{N-2}P_{k}

(N1)×max1i,jN(Di,j)PN(N-1) \times \max_{1 \leq i,j \leq N} (D_{i,j}) \geq P_Nであるのでこれを変形して, max1i,jN(Di,j)PN÷(N1)\max_{1 \leq i,j \leq N} (D_{i,j}) \geq P_N \div (N-1)を得ます.
また,制約よりDi,j105D_{i,j} \leq 10^5であるので, 105PN÷(N1)10^5 \geq P_N \div (N-1)です.
この不等式を満たすようなNNは高々1212であることが実際の計算により確かめることができます.

P12=9864101P_{12} = 9864101であるので,実際にあり得るパスをすべて列挙し, 長さが同じであるものが存在するかどうかを見ればよいです.

時間計算量は上で表したPNP_Nを用いてO(N×PN)O(N \times P_N)です. 厳密にはもっと厳しい評価や,実装の際の枝刈りができるため, 実際の計算回数はもう少し少なく抑えることができます.