Pagini recente » Cod sursa (job #942135) | Cod sursa (job #1050711) | Cod sursa (job #394500) | Cod sursa (job #1731634) | Cod sursa (job #2788833)
#include<fstream>
using namespace std;
ifstream F("cc.in");
ofstream G("cc.out");
int k,i,j,n,v[202][202],c[202][202],f[202][202],w[100001],u[202],g[202],p,q,t,l,r,e;
int main()
{
for(F>>n,i=1;i<=n;++i)
for(j=1;j<=n;++j)
F>>k,v[i][n+j+1]=k,v[n+j+1][i]=-k,c[i][n+j+1]=1;
for(i=1;i<=n;++i)
c[0][i]=c[i+n+1][n+1]=1;
while(1) {
for(i=1;i<=2*n+1;++i)
u[i]=0,g[i]=100001;
for(g[0]=p=q=0,w[q++]=0;p<q;) {
t=w[p++];
if(t&&t<=n) {
for(i=n+1;i<=2*n+1;++i)
if(f[t][i]<c[t][i]&&g[i]>g[t]+v[t][i])
w[q++]=i,u[i]=t,g[i]=g[t]+v[t][i];
} else
for(i=1;i<=n+1;++i)
if(f[t][i]<c[t][i]&&g[i]>g[t]+v[t][i])
w[q++]=i,u[i]=t,g[i]=g[t]+v[t][i];
}
if(!u[n+1])
break;
for(e+=g[n+1],l=n+1;l;l=u[l])
++f[u[l]][l],--f[l][u[l]];
}
G<<e;
return 0;
}