#include "util/min_cut.h"
#include "util/debug.h"
static void tst_min_cut_reverse_arc() {
min_cut mc;
for (unsigned i = 0; i < 4; ++i)
mc.new_node();
mc.add_edge(0, 2);
mc.add_edge(0, 3);
mc.add_edge(2, 3);
mc.add_edge(3, 1);
unsigned_vector cut;
mc.compute_min_cut(cut);
ENSURE(cut.size() == 1 && cut[0] == 1);
}
static void tst_min_cut_two_paths() {
min_cut mc;
for (unsigned i = 0; i < 5; ++i)
mc.new_node();
mc.add_edge(0, 2);
mc.add_edge(0, 3);
mc.add_edge(2, 1);
mc.add_edge(2, 3);
mc.add_edge(3, 4);
mc.add_edge(4, 1);
unsigned_vector cut;
mc.compute_min_cut(cut);
ENSURE(cut.size() == 2);
}
void tst_min_cut() {
tst_min_cut_reverse_arc();
tst_min_cut_two_paths();
}