難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Balanced Path

作成者 mackerel38

テスター yukimy32

難易度(作成者設定) Lv.5

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

解説

頂点 SS を根として DFS 木を構築することを考える。

無向グラフの DFS 木では、祖先・子孫の関係にない頂点間に辺は存在しない。根からのパスに含まれる頂点をすべて削除すると、残った連結成分はそれぞれ、パス上の頂点から分かれる部分木となる。

よって、DFS 木の各頂点 vv について、vv を根とする部分木の頂点数を szvsz_v とすると、以下のように頂点を追加することによって構築したパスが条件を満たす。

  1. 頂点 SS を始点として追加する。
  2. 現在の最後に追加した頂点 vv の子のうち、szu>⌊N2⌋sz_u \gt \left\lfloor \dfrac{N}{2}\right\rfloor を満たす頂点 uu が存在すれば、uu を追加する。
  3. そのような子が存在しなければ終了する。あれば1 に戻る。

部分木の頂点数が ⌊N2⌋\left\lfloor \dfrac{N}{2}\right\rfloor を超える子は高々 11 個であるため、パスから分岐する部分木の頂点数はいずれも ⌊N2⌋\left\lfloor \dfrac{N}{2}\right\rfloor 以下となる。

よって、構築したパスは条件を満たし、答えは常に存在する。

よって、 O(N+M)O(N+M) でこの問題を解くことができる。

ユーザー解説

ユーザー解説を書く

ユーザー解説はまだありません。