競技プログラミング用 知識集積所
ABC420E - Reachability Query
最終更新:
sport_programming
-
view
問題
必要知識
B以下レベルの内容は省略
考え方
UnionFind木※の中身の構造を参考に、各連結成分の親のところに「その連結成分に何個黒があるか」を保管しておくことを考える。
そうすれば、
そうすれば、
- クエリ1のときに、黒頂点数を足して保管しなおす
- クエリ2のときに、黒頂点数も変更する
- クエリ3の時には、黒頂点数が正かどうかを見る
で高速に処理することができる。
これは、自前でUnionFind木※を実装して中身を加工するのが正統な方法であろうが、外付けのvectorで黒頂点数だけ管理しても対応できる。