Pagini recente » Cod sursa (job #772609) | Cod sursa (job #1678589) | Cod sursa (job #1356253) | Cod sursa (job #2704717) | Cod sursa (job #2285955)
#include <bits/stdc++.h>
using namespace std;
const int inf=1e9;
int c[12][12],d[(1<<12)+10][12];
int main()
{
freopen("cast.in","r",stdin);
freopen("cast.out","w",stdout);
int t,n;
scanf("%d",&t);
for(int test=1;test<=t;test++)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) scanf("%d",&c[i][j]);
int lim=(1<<n);
for(int mask=0;mask<lim;mask++)
for(int i=0;i<n;i++)
if(mask&(1<<i))
{
if(mask==(1<<i)) {d[mask][i]=0;continue;}
d[mask][i]=inf;
for(int mask1=mask-(1<<i);mask1;mask1=(mask1-1)&(mask-(1<<i)))
for(int j=0;j<n;j++)
if(mask1&(1<<j))
d[mask][i]=min(d[mask][i],c[i][j]+max(d[mask1][j],d[mask^mask1][i]));
}
printf("%d\n",d[lim-1][0]);
}
return 0;
}