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

edge_input

クラス · 辺の列を読み込んで保持する入力中間型

template <class T>
struct edge_input;

概要

辺の列を読み込んで保持する入力中間型

テンプレートパラメータ

名前 説明
T 辺の重みの型。void で重みなし(入力から重みを読まない)。 標準入力から (from, to[, weight]) を origin 補正して読み込み、 グラフ表現に依存しない生の辺データとして保持する。 build_directed(graph) / build_undirected(graph) で任意のグラフ型に 流し込める(add_edge / add_edges を持つ型なら何でも受け取れる)。

計算量

構築・破棄

名前 説明 計算量
(constructor) (1) 空の辺列を構築する
(2) 標準入力から m 本の辺を読み込む(頂点番号は origin から)
(1) $O(1)$
(2) $O(m)$

メンバ関数

名前 説明 計算量
input 標準入力から m 本の辺を追加で読み込む $O(m)$
emplace 1 本の辺を追加する 償却 $O(1)$
size 保持する辺数を返す $O(1)$
begin 先頭iteratorを返す $O(1)$
end 終端iteratorを返す $O(1)$
build_directed 有向辺として graph に流し込む(add_edge を呼ぶ) $O(E)$
build_undirected 無向辺として graph に流し込む(add_edges を呼ぶ) $O(E)$
to_directed n 頂点の有向グラフを構築して返す $O(V+E)$
to_undirected n 頂点の無向グラフを構築して返す $O(V+E)$

演算子

名前 説明 計算量
operator[] i番目の辺を返す $O(1)$

メンバ型

名前 説明 計算量
weight_type 重みの実体型 型エイリアスで実行時計算量はない
raw_edge 入力した1本の辺 データ型で実行時計算量はない

メンバ変数

名前 説明 計算量
weighted — コンパイル時定数で実行時計算量はない

メンバの詳細

(constructor)

// (1)
edge_input() = default;

// (2)
explicit edge_input(int m, int origin = 1);

(1) 空の辺列を構築する

(2) 標準入力から m 本の辺を読み込む(頂点番号は origin から)

to_directed

template <template <class> class GraphT = csr_graph>
GraphT<T> to_directed(int n) const;

n 頂点の有向グラフを構築して返す

to_undirected

template <template <class> class GraphT = csr_graph>
GraphT<T> to_undirected(int n) const;

n 頂点の無向グラフを構築して返す

raw_edge

struct raw_edge;

入力した1本の辺

メンバ 説明
to 辺の始点と終点
weight 辺の重み

weighted

static constexpr bool weighted = !std::is_void_v<T>;

重みの実体型: void は空タグ Unweighted に正規化する