View on GitHub

cp-library

Three-Edge-Connected Components ( 3-辺連結成分 )

C++ 用ライブラリ一覧に戻る

ソースコード

nachia/graph/three-edge-connected-components.hpp

主な機能

無向グラフのすべての連結成分について、 $2$-辺連結成分をすべて求める。その後、それらの $3$-辺連結成分をすべて求める。

$2$ 頂点 $s$ , $t$ 間が $k$-辺連結であるとは、 $k-1$ 本の辺をどのように選んで取り除いても $s$ , $t$ 間が連結であることである。この $s$ , $t$ の関係は推移律を満たすので、その同値類(頂点集合)をとり、その誘導部分グラフを $k$-辺連結成分と呼ぶ。

再帰の深い関数を使わない。

struct ThreeEdgeConnectedComponents

コンストラクタ

ThreeEdgeConnectedComponents(Graph G = Graph(0, true));

nachia::Graph とは?

メインの計算を行う。

num2EdgeComponents , num3EdgeCCComponents

int num2EdgeCCComponents() const noexcept; // (1)
int num3EdgeCCComponents() const noexcept; // (2)

getTeccVertices

CsrArray<int> get2EdgeCCVertices() const; // (1)
CsrArray<int> get3EdgeCCVertices() const; // (2)

getVertexMapping

std::vector<int> getVertexMapping() const;

各頂点について、それが属する $3$-辺連結成分の番号を得る。 $3$-辺連結成分の番号は get3EdgeCCVertices の返り値と対応する。

参考


TOP PAGE