/* Given a directed graph with all the properties of a transport network where Nnodes = number of nodes, Nlinks = number of links 1 is the integer-label on the entry node, Nnodes is the integer-label on the exit node N = integer-label (natural number) on any node, Nnodes=number of nodes = label on exit node (1 = label on entry node) L = invisible label (natural number), called the link number, of the link A[L] -> B[L] Each link L with have a permanent maximum capacity CAP[L] (weight) assigned to it when the graph is presented for the first time Note: Given I = any node in the graph. The smallest value of J such that I -> J is a link in the graph and has the invisible link number L, where L = LOC[I] where A[L] = I and B[L] = J: A[L] -> B[L] FL[L] = actual flow at the present time through link A[L] -> B[L]: FL[L]>=0; if the flow is in the direction of the link, then FB[L]=+1, if in the direction opposite to the link, FB[L]=-1; CAP[L] = a fixed maximum capacity preassigned to the link A[L] -> B[L], no flow through that link may be more than the capacity: FL[L]<=CAP[L], Link is saturated or full if F[L] = CAP[L]; The pseudo-link 0 -> 1 will allow any amount of flow delivered to the entry node, so it will be given a capacity of INF = any number larger than the sum of capacities of all the links in the graph. Here it will be the largest positive integer allowed by the computer. For some, possibly every, node N there is an invisible path from the entry node 1 to N 1 -> ... -> N and attached to N is a label (*) (E[N], PREV[N], FBN[N]) E[N] = maximum amount of increase of the actual flow FLN[N] along the path 1 -> ... -> N without violating none of restrictions (capacities) on flow through all of the links in the path; PREV[N] = node previous to node N on path FBN[N] = orientation of flow in link PREV[N] - > N 1 = forward (flow along direction of link), -1 = backward (flow opposite to direction of link, 0 = link not used yet 1 means A[L]->B[L], -1 means B[L]->A[L], where L = LOC[PREV[N]] Nstate[N] = condition of node N: 0 = node N has no label (*); equivalently, E[N], PREV[N], FBN[N] have not been given values yet although they are by default (INF,0,0) 1 = labeled ( (*) given the three values), but not all neighbors of N labeled 2 = node N has a label and all neighbors of N have labels (Nstate[neighbor of N]>0) So that the entry node 1 will be labeled, there is a pseudo-node 0 and a pseudo-link 0 -> 1 (which are not part of the graph) through which any amount of flow is allowed, so the capacity of the pseudo-link is infinite (INF) Every link in the graph has an invisible label L, called the link number, for which A[L] -> B[L] is that link. Often in the algorithm I=A[L] and J=B[L] and J is about to receive a label (*). In the label on a node N the coordinate PREV[N] shows the last node in the path previous to N. Using this fact it is possible to trace from node N all the way back to the entry node 1, thus exposing the invisible path from 1 to N. */