Pagini recente » Cod sursa (job #2028883) | Cod sursa (job #2296585) | Cod sursa (job #2210085) | Cod sursa (job #2148928) | Cod sursa (job #165036)
Cod sursa(job #165036)
#include<stdio.h>
//#include<memory.h>
#define inf 0x7d00
int a[102][102],c[102][102],i,j,n,m,k,l,p,d[202],t[202];
FILE *in,*out;
int drmin(){
int i,j,p,ok;
//memset(d,0x7d00,sizeof(d));
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&&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);
//memset(a,0x7d00,sizeof(a));
//memset(c,0x2,sizeof(c));
m=(n<<1)+1;
for(i=0;i<=m;i++)
for(j=0;j<=m;j++){
c[i][j]=2;
a[i][j]=inf;
}
for(i=1;i<=n;i++){
a[0][i]=a[n+i][m]=0;
a[i][0]=a[m][n+i]=-1;
c[0][i]=c[n+i][m]=1;
c[i][0]=c[m][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);
}