#include #include #include #include const int SIZE=6; void transport(int m,int n,int inf,int a[],int b[], int c[SIZE][SIZE],int x[SIZE][SIZE],int &ko); int main() { int m=5,n=7,inf=INT_MAX; int a[SIZE]={0,30,10,45,30}, int b[SIZE]={0,25,20,6,7,22,35}; int c[SIZE][SIZE]= {{0, 0, 0, 0, 0, 0, 0}, { 0,30,11, 5,35, 8,29}, { 0, 2, 5, 2, 5, 1, 9}, { 0,35,20, 6,40, 8,33}, { 0,19, 2, 4,30,10,25}}; int X[SIZE][SIZE]; int KO; int x,y; cout<<"The array:"<0) { ra=u[i]; j=0; //JJ fix do //until j=n or lab2=false { j++; if ((del[j]==0)&&((v[j]-ra)==c[i][j])) { //element I,J is admissible k[j]=i; //column j can be labelled del[j]=sf; lab=false; if (b[j]>0) //breakthrough { lab=true; lab2=false; sf=abs(del[j]); r=b[j]; if (r0) sf=sf+r*c[i][j]; } KO=sf; } //end if(lab1) } //end breakthrough } //end labeling column }while ((j0 }while ((i0) { for (i=1;i<=m;i++) if (eps[i]==0) { r=X[i][j]; if (r>0) { w[i]=j; if (r<=sf) eps[i]=r; else eps[i]=sf; lab=false; } } //end i loop and eps[i]=0 del[j]=-sf; } //sf>0 } //j loop } //not lab } while (!lab); if (lab2) { r=inf; for (i=1;i<=m;i++) if (eps[i]!=0) { ra=u[i]; for (j=1;j<=n;j++) if (del[j]==0) { sf=c[i][j]+ra-v[j]; if (r>sf) r=sf; } } //i loop, eps[i]!=0 for (i=1;i<=m;i++) if (eps[i]==0) u[i]+=r; for (j=1;j<=n;j++) if (del[j]==0) v[j]+=r; } //end lab2 }while (!lab1); return; }