29#define HK_INFINITY SHRT_MAX
45 elog(
ERROR,
"invalid set size for BipartiteMatch");
47 state->u_size = u_size;
48 state->v_size = v_size;
49 state->adjacency = adjacency;
60 for (u = 1; u <= u_size; u++)
62 if (
state->pair_uv[u] == 0)
96 short *queue =
state->queue;
97 short *distance =
state->distance;
104 for (u = 1; u <=
usize; u++)
106 if (
state->pair_uv[u] == 0)
119 if (distance[u] < distance[0])
130 distance[
u_next] = 1 + distance[u];
148 short *distance =
state->distance;
149 short *pair_uv =
state->pair_uv;
150 short *pair_vu =
state->pair_vu;
167 if (distance[pair_vu[v]] ==
nextdist)
BipartiteMatchState * BipartiteMatch(int u_size, int v_size, short **adjacency)
static bool hk_depth_search(BipartiteMatchState *state, int u)
void BipartiteMatchFree(BipartiteMatchState *state)
static bool hk_breadth_search(BipartiteMatchState *state)
#define Assert(condition)
#define palloc_object(type)
void pfree(void *pointer)
void * palloc0(Size size)
#define CHECK_FOR_INTERRUPTS()
void check_stack_depth(void)