/* Determine if a graph is bipartite or not. */ BEG_G{ int vc, c, color[node_t]; node_t v; edge_t e; $tvtype = TV_dfs; $tvroot = fstnode($); } N{ if ($tvedge == NULL) color[$] = 1; if (color[$] == 1) c = 2; else c = 1; for (e = fstedge($); e; e = nxtedge(e,$)) { v = opp(e,$); vc = color[v]; if (vc == 0) color[v] = c; else if (vc != c) { printf(2, "Not bipartite\n"); exit(1); } } }