dequeを使う際の流れ(自分用)
dequeを使う場合の流れについて、すぐにわからなくなるので、自分なりに書いてみることにした。
ほぼ人の解説コードにコメントを付けただけのコードをコンテスト後にsubmitしたが、今後、根付き木や、dequeを使う上で再利用可能だと思うので、メモを残しておく。
Submission #24164651 - AtCoder Beginner Contest 209
dequeを使う場合の大まかな流れは以下のとおり。
0. まずは、データ構造を準備しておく。根付き木の場合は、隣接リスト。この設問の場合は、各頂点の根からの深さのリストも準備する。 1. 伝播用にdequeに最初の要素を入れる(伝播用確定) 2. dequeから要素の取り出し (dequeのループを定義し、最初で要素を取り出す) | 3. 要素を確定する | 4. 子ノードのループを作る | | 5. 既に確定しているものは無視する。 | | 6. 子ノードを伝播用確定する。
こういう形で実装すればいい。伝播用に取り出すところと、その中で確定させるのがポイント。さらに中では伝播用のことしかしない。
こういう再帰っぽいことを考えるのは、難しいなと思った。これで茶色の上の方らしい。むむむ。