haar_lib/flow/
mod.rs

1//! フロー問題
2
3pub mod dinic;
4pub mod ford_fulkerson;
5
6pub mod min_cost_flow;
7
8/// 最大フロー問題を扱うトレイト。
9pub trait MaxFlow {
10    /// 容量の型
11    type Cap;
12    /// 頂点数`n`の空のグラフを返す。
13    fn new(n: usize) -> Self;
14    /// 頂点`u`から頂点`v`へ容量`cap`の辺を張る。
15    fn add_edge(&mut self, u: usize, v: usize, cap: Self::Cap);
16    /// 頂点`s`から頂点`t`への最大フローを求める。
17    fn max_flow(&mut self, s: usize, t: usize) -> Self::Cap;
18    /// 最大フローを達成するのに通った辺を返す。
19    fn get_edges(&self, i: usize) -> Vec<(usize, Self::Cap)>;
20    /// フローを初期化する。
21    fn reset(&mut self);
22}