$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇ref006:Manthan, Codefest 18 - D : Valid BFS?◇◇


☆問題URL

https://codeforces.com/contest/1037/problem/D

☆問題の概要

$N$個の頂点を持つ木と$N$要素の数列が与えられる。与えられた木をBFSで探索したとき、その探索順が与えられた数列と同じになりうるかどうか判定せよ。

☆解法

この問題は実際にBFSをして探索順を記録すれば解ける。BFSをする前に隣接リスト内の要素を与えられた数列に出てくる順にソートしておけば、必ず数列と同じ順で探索できるはずである。もし同じにならないのであれば、与えられた数列はBFSの有効な探索順ではないということになる。

☆反省

コンテスト中「DFSの探索順であるか判定するコード」を書いていた。問題文をよく読みましょう。

戻る