algo — C++23 日本語リファレンス GitHub

bipartite_coloring

関数 · 二部グラフ判定と 2 彩色

template <graph_type G>
std::optional<std::vector<int>> bipartite_coloring(const G &g);

概要

二部グラフ判定と 2 彩色

2 彩色は連結成分ごとに色の入れ替えを除いて一意なので、 各成分で大きい側を色 0 に選ぶことで色 0 の頂点数を全体で最大化する (同数なら成分の代表頂点側を色 0 とする)。 色 1 を最大化したい場合は全頂点の色を反転すればよい。

テンプレートパラメータ

名前 説明
G グラフ型(無向グラフを想定、list_graph<T> / csr_graph<T> のいずれでも可)

戻り値

二部グラフなら各頂点の色(0/1)の割り当て、そうでなければ std::nullopt

計算量