/****************************************************************************** * Sample solution for the Taxi Cab Scheme problem in NWERC'04 * Author: Andreas Björklund * Solution: Reduce problem to minimum disjoint path cover of a DAG, which is * solved by matching. ******************************************************************************/ #include #define MAXNODES (500) struct tnode { int c,d,tid,fromwho; }; static struct tnode nodes[MAXNODES]; static int nreach[MAXNODES]; static int reachs[MAXNODES][MAXNODES]; static int path[MAXNODES]; static int vis[MAXNODES]; int augment(int who, int cnt) { int i,rcnt; if (!vis[who]) { vis[who]=1; for (i=0;i