#define	MAXWT  1000000

/* define NULL 0 */


/* the number of the blossom entered by edge e */
#define BEND(e) (BASE[END[e]])

/* the blossom matched with v's blossom */
#define BMATE(v) (BASE[END[MATE[v]]])

/* the blossom entered by the edge that links v's blossom */
#define BLINK(v) (BASE[END[LINK[v]]])

/* the edge e with it's direction reversed */
#define OPPEDGE(e) (((e - U) % 2 == 0) ? (e - 1) : (e + 1))

/* the slack of edge e */
#define SLACK(e) (Y[END[e]] + Y[END[OPPEDGE(e)]] - WEIGHT[e])


/* Global variables */
static int *A,*END,*WEIGHT,*NEXTPAIR;
static int *MATE,*LINK,*BASE,*NEXTVTX,*LASTVTX,*Y,*NEXT_D,*NEXTEDGE;

static int LAST_D, DELTA;

static int LASTEDGE[3];

static int DUMMYVERTEX, DUMMYEDGE;
static int U, V;

static int newbase, oldbase, nextbase, stopscan, pairpoint;
static int neighbor, nextpoint, newlast;
static int newmate, oldmate, oldfirst, firstmate, secondmate;
static int f, nextedge, nexte, nextu;

static int v,i,e;


