アットウィキロゴ
競技プログラミング用 知識集積所
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

競技プログラミング用 知識集積所

ABC448D - Integer-duplicated Path

最終更新:

sport_programming

- view
管理者のみ編集可


問題


必要知識

B以下レベルの内容は省略

考え方

毎回経路探索をしていてはTLE。
それどころか、経路を最初に全部探索しても、数の重複があるかどうかのチェックだけですら普通にやるとTLEする。
というのは、直線の木で数値の重複がほとんどなかった場合、毎回数値一覧を作っていては頂点1からの距離だけ毎回かかってしまう。
かといって、数値一覧を頂点情報としてコピーしていっても同様。

そこで、数値一覧を使いまわししながら深さ優先探索※をする。
まず、頂点1からスタートする。
ある頂点に入った時に、数値一覧と重複数を更新し、頂点が条件を満たすかどうかを確認する。
その後、子を順に探索する。
それが終わった時に、更新した数値一覧と重複数を元に戻す。
これで、全頂点について、O(N)で(数値一覧にmap※などを用いたらO(NlogN)で)調査でき、間に合う。

解答例


注意点


別解

最近更新されたスレッド
ウィキ募集バナー