Pagini recente » Cod sursa (job #3191163) | Cod sursa (job #408424) | Cod sursa (job #2551333) | Cod sursa (job #2523792) | Cod sursa (job #1720255)
#include <cstdio>
#define INF 100000000
#define MAXN 12
int d[1<<MAXN][MAXN], m[MAXN][MAXN], v[MAXN];
inline int max2(int a, int b){
if(a>b) return a;
else return b;
}
inline int min2(int a, int b){
if(a<b) return a;
else return b;
}
int main(){
int t, n, i, j, p, q, c;
FILE *fin, *fout;
fin=fopen("cast.in", "r");
fout=fopen("cast.out", "w");
fscanf(fin, "%d", &t);
for(; t; t--){
fscanf(fin, "%d", &n);
for(i=0; i<n; i++){
for(j=0; j<n; j++){
fscanf(fin, "%d", &m[i][j]);
}
}
for(i=1; i<(1<<n); i++){
for(j=0; j<n; j++){
if(i&(1<<j)){
if(i==(1<<j)) d[i][j]=0;
else{
d[i][j]=INF;
c=i^(1<<j);
for(p=c; p>0; p=(p-1)&c){
for(q=0; q<n; q++){
if(p&(1<<q)) d[i][j]=min2(d[i][j], m[j][q]+max2(d[i^p][j], d[p][q]));
}
}
}
}
}
}
fprintf(fout, "%d\n", d[(1<<n)-1][0]);
}
fclose(fin);
fclose(fout);
return 0;
}