Official
D - Ancestor Relation Editorial
by
高速かつ楽な実装方針
D - Ancestor Relation Editorial
by
snuke
高速かつ楽な実装方針
(\(A\) を隣接行列だとみなして)次数最大の頂点から順番に辿る DFS 木を作ると、答えが正である場合は条件を満たす木になっています。
条件を満たすかの判定:DFS 中に祖先を管理し、先祖/子孫に \(1\) を書いた行列 \(A'\) を作り、\(A\) と比較。
数え上げ:入れ替え可能な(=次数が同じ)先祖の個数を DFS の引数にすると楽。
計算量:\(O(N^2)\)
以下が答えが正である必要十分条件となることを利用し、これを bitset 等で判定するのが一番実装が楽だと思われます。
- \(A_{1,v} = 1\)
- \(A_{u,v} = 1\) かつ \(A_u \nsubseteq A_v\) かつ \(A_v \nsubseteq A_u\) である \(u,v\) の組が存在しない
posted:
last update: