/* ========================================================================
   MULTICOMMODITY (CONCURRENT) FLOW PROGRAM

   Uses the following files:
       MULTICOM3.C	main program
       MULTICOMIO.C	input / output routines
       ROUTE.C		routine to find initial routes
       DECONGEST3.C	iterated procedure
       MINCOST.C	minimum-cost flow routine (Bertsekas & Tseng)
       COMMON.H		include files; macro, type, struct definitions
       MCF.H		global variable and array declarations
       EXPINTEGERS	integral powers of e
       EXPHUNDRETHS	decimal powers of e (to the 2nd decimal place)
       LIBF2C.A		library functions from Fortran to C conversion

   Written:
       August 8, 1991 by Tishya A. Leong

   Usage:
       mcf3 inputfile outputfile
   ======================================================================== */


/* ------------------------------------------------------------------------
   File: MCF.H
   Purpose: Include file for global variable and array declarations
	    These variables and arrays are defined in MULTICOM3.C
   ------------------------------------------------------------------------ */


/* ------------------------------------------------------------------------
   Graph parameters 
   ------------------------------------------------------------------------ */
extern int n_nodes;       /* number of nodes (n) 			    */
extern int n_edges;	  /* number of edges (m)			    */
extern int n_commodities; /* number of commodities (k)	      		    */
extern int *heads;	  /* higher numbered node incident to each edge     */
extern int *tails;        /* lower numbered node incident to each edge      */
extern int *capacities;   /* capacity of each edge 		      	    */
extern int *sources;      /* source node for each commodity 		    */
extern int *sinks;	  /* sink node for each commodity   		    */
extern int *demands;	  /* demand for each commodity 	  	   	    */
extern Ftype epsilon;	  /* desired closeness to lower bound		    */


/* ------------------------------------------------------------------------
   Constants set at beginning of program 
   ------------------------------------------------------------------------ */
extern Ftype logConstant;     /* constant to prevent overflow of lengths    */
extern int n_commodityGroups; /* number of commodity groups (k')	    */


/* ------------------------------------------------------------------------
   Arrays for finding exponents
   ------------------------------------------------------------------------ */
extern Ftype expIntegers[89];	/* table for integral powers of e	    */
extern Ftype expHundreths[100];	/* table for powers of e from .00 to .99    */


/* ------------------------------------------------------------------------
   Arrays used for calculations in various routines 
   ------------------------------------------------------------------------ */
extern int *comCapacities;     /* capacities used to find min cost flows    */
extern int *comDemands;	       /* demands used to find min cost flows       */
extern int *comLengths;	       /* lengths used to find min cost flows	    */
extern int *intFlows;	       /* integral flows from min cost flow routine */
extern int *lengths;	       /* edge lengths				    */
extern Ftype *desired_flows;   /* min cost flows			    */
extern Ftype *minCostFlowSums; /* flows to compute sum of min cost flows    */
extern Ftype *individual_flows;/* flows for each commodity group	    */
extern Ftype *best_flows;      /* flows giving lowest congestion	    */
extern Ftype *total_flows;     /* total flow on each edge		    */
extern Ftype *congestions;     /* congestion of each edge		    */
extern struct groupType *commodityGroups;  /* list of commodity groups	    */
extern struct cost_list_elt *costs;	   /* list of groups and costs      */
