Pagini recente » Cod sursa (job #559733) | Cod sursa (job #1882866) | Cod sursa (job #2472790) | Cod sursa (job #2982068) | Cod sursa (job #164798)
Cod sursa(job #164798)
#include<stdio.h>
#define inf 0x7d00
int a[202][202],c[202][202],i,j,n,m,k,l,p,d[202],t[202];
FILE *in,*out;
int drmin(){
int i,j,p,ok;
for(i=0;i<=n+1;i++)
d[i]=inf;
d[0]=0;
do{
ok=0;
for(i=0;i<=n;i++)
if(d[i]!=inf)
for(j=0;j<=n+1;j++)
if(c[i][j]==1&&a[i][j]!=inf&&d[j]>d[i]+a[i][j]){
d[j]=d[i]+a[i][j];
t[j]=i;
ok=1;
}
} while(ok);
return(d[n+1]);
}
int intoarce(){
int i=n+1;
while(i!=0){
c[t[i]][i]--;
c[i][t[i]]++;
i=t[i];
}
return(0);
}
int main(){
in=fopen("cc.in","rt");
out=fopen("cc.out","wt");
fscanf(in,"%d",&n);
for(i=0;i<=(n<<1)+1;i++)
for(j=0;j<=(n<<1)+1;j++){
c[i][j]=2;
a[i][j]=inf;
}
for(i=1;i<=n;i++){
a[0][i]=a[n+i][(n<<1)+1]=0;
a[i][0]=a[(n<<1)+1][n+i]=-1;
c[0][i]=c[n+i][(n<<1)+1]=1;
c[i][0]=c[(n<<1)+1][n+i]=0;
for(j=1;j<=n;j++){
fscanf(in,"%d",&l);
a[i][n+j]=l;
a[n+j][i]=-l;
c[i][n+j]=1;
c[n+j][i]=0;
}
}
n=n<<1;
m=0;
while((l=drmin())!=inf){
m+=l;
intoarce();
}
fprintf(out,"%d\n",m);
return(0);
}