Pagini recente » Cod sursa (job #127319) | Statisticile problemei Plantatie | Cod sursa (job #127300) | Cod sursa (job #255931)
Cod sursa(job #255931)
#include<fstream.h>
ifstream fin("date.in");
ofstream fout("date.out");
int a[20][20],V[20][20],n;
int fmax=0,i,j,s,d,x[20][3],Q[20],p[20],t[20],gasit,v;
int main()
{ int e,f,g;
fin>>n;
while(fin>>e>>f>>g)
{ a[e][f]=g;
V[e][0]++;
V[e][V[e][0]]=f;
}
for(i=1;i<=n;i++)
{ for(j=0;j<=n;j++)
fout<<V[i][j]<<" ";
fout<<endl;
}
do { gasit=0;
for(i=1;i<=n;i++)
{ Q[i]=0;
p[i]=0;
t[i]=0;
}
s=d=1;
p[1]=1;
Q[1]=1;
while(s<=d)
{ for(i=1;i<=V[Q[s]][0];i++)
{ int j=V[Q[s]][i];
if(p[j]==0&&a[Q[s]][j]>0)
{ d++;
Q[d]=j;
p[j]=1;
t[j]=Q[s];
if(j==n) gasit=1;
}
}
s++;
}
if(gasit)
{ int k=0;
v=n;
while(v!=1)
{ k++;
x[k][1]=t[v];
x[k][2]=v;
v=t[v];
}
int min=10000;
for(i=1;i<=k;i++)
if(min>a[x[i][1]][x[i][2]])
min=a[x[i][1]][x[i][2]];
fmax+=min;
for(i=1;i<=k;i++)
{ int b=x[i][1];
int c=x[i][2];
a[b][c]=a[b][c]-min;
a[c][b]+=min;
}
}
}while(gasit);
fout<<fmax;
fin.close();
fout.close();
return 0;
}