10  REM  MAXIMUM FLOW PROBLEM
20  REM  USING THE LABELLING TECHNIQUE OF FORD & FULKERSON
30  DIM C[36,36],A[36,36],D[36,36],H[36],K[36],S[36],P[36]
40  MAT C=ZER
50  MAT A=ZER
60  MAT D=ZER
70  MAT H=ZER
80  MAT K=ZER
90  MAT S=ZER
100  MAT P=ZER
110  READ N
120  F=0
130  READ I,J,C[I,J]
140  IF I<N THEN 130
150  IF J<N THEN 130
160  MAT A=C
170  FOR I=2 TO N
180  IF A[1,I]>0 THEN 210
190  NEXT I
200  GOTO 970
210  FOR J=1 TO N-1
220  IF A[J,N]>0 THEN 250
230  NEXT J
240  GOTO 970
250  GOSUB 360
260  PRINT 
270  MAT D=(E)*D
280  FOR I=1 TO N
290  FOR J=1 TO N
300  A[I,J]=A[I,J]+D[I,J]
310  NEXT J
320  NEXT I
330  IF E=0 THEN 970
340  F=F+E
350  GOTO 170
360  MAT D=ZER[N,N]
370  MAT H=ZER[N]
380  MAT K=ZER[N]
390  E=0
400  H[1]=1
410  K[1]=1.E+07
420  FOR J=2 TO N
430  FOR I=1 TO N
440  IF A[I,J] <= 0 THEN 520
450  IF H[I]=0 THEN 530
460  H[J]=I
470  IF K[I] <= A[I,J] THEN 500
480  K[J]=A[I,J]
490  GOTO 510
500  K[J]=K[I]
510  GOTO 530
520  NEXT I
530  NEXT J
540  IF H[N] <> 0 THEN 750
550  MAT S=ZER[N]
560  FOR I=2 TO N
570  IF H[I] <> 0 THEN 690
580  FOR L=2 TO N
590  IF A[L,I] <= 0 THEN 680
600  IF H[L] <= 0 THEN 680
610  H[I]=L
620  S[I]=1
630  IF K[L] <= A[L,I] THEN 660
640  K[I]=A[L,I]
650  GOTO 690
660  K[I]=K[L]
670  GOTO 690
680  NEXT L
690  NEXT I
700  IF H[N] <> 0 THEN 750
710  FOR L1=1 TO N
720  IF S[L1] <> 0 THEN 550
730  NEXT L1
740  GOTO 960
750  E=K[N]
760  IF E=0 THEN 960
770  MAT P=ZER[N]
780  M=1
790  U=H[N]
800  V=N
810  PRINT "THE CHAIN CONNECT NODE 1 (SOURCE) AND NODE";N;"(SINK):"
820  D[U,V]=-1
830  D[V,U]=1
840  P[M]=U
850  IF U=1 THEN 900
860  V=U
870  U=H[U]
880  M=M+1
890  GOTO 820
900  FOR M=N TO 1 STEP -1
910  IF P[M]=0 THEN 930
920  PRINT P[M];
930  NEXT M
940  PRINT N
950  PRINT "     ";"FLOW =";E
960  RETURN 
970  IF F=0 THEN 1140
980  MAT C=C-A
990  PRINT 
1000  PRINT "THE OPTIMAL SOLUTION AS FOLLOWS:"
1010  PRINT 
1020  FOR I=1 TO N
1030  FOR J=1 TO N
1040  IF C[I,J] <= 0 THEN 1070
1050  PRINT  USING 1060;I,J,C[I,J]
1060  IMAGE 10X,"F(",2D,",",2D,")=",5D.2D
1070  NEXT J
1080  NEXT I
1090  PRINT 
1100  PRINT "THE MAXIMUM FLOW =";F
1110  PRINT 
1120  PRINT 
1130  STOP 
1140  PRINT 
1150  PRINT "MAXIMUM FLOW DO NOT EXIST"
9999  END 
