12 #ifndef FIRM_ADT_BIPARTITE_H 13 #define FIRM_ADT_BIPARTITE_H int bipartite_adj(bipartite_t const *gr, unsigned i, unsigned j)
Return 1 if edge from i (on the left side) to j (on the right side) exists, 0 otherwise.
void bipartite_remv(bipartite_t *gr, unsigned i, unsigned j)
Remove edge from i (on the left side) to j (on the right side)
bipartite_t * bipartite_new(unsigned n_left, unsigned n_right)
Create new bipartite matching problem with n_left elements on left side and n_right elements on right...
void bipartite_dump_f(FILE *f, bipartite_t const *gr)
Dumps a bipartite graph to a file stream.
struct bipartite_t bipartite_t
internal representation of bipartite matching problem
void bipartite_matching(bipartite_t const *gr, int *matching)
Solve bipartite matching problem.
void bipartite_add(bipartite_t *gr, unsigned i, unsigned j)
Add edge from i (on the left side) to j (on the right side)
void bipartite_free(bipartite_t *gr)
Free memory occupied by bipartite matching problem.
void bipartite_dump(char const *name, bipartite_t const *gr)
Dumps a bipartite graph to file name.