Pagini recente » Cod sursa (job #800417) | Cod sursa (job #747360) | Cod sursa (job #1848493) | Cod sursa (job #1426376) | Cod sursa (job #1551416)
#include <cstdio>
#include <algorithm>
using namespace std;
const int inf=1000000000;
int d[1<<12][12],cost[13][13];
int main()
{
freopen("cast.in", "r", stdin);
freopen("cast.out", "w", stdout);
int t;
for(scanf("%d",&t);t;t--)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++) scanf("%d",&cost[i][j]);
int lim=1<<n;
for(int mask=1;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],cost[i][j]+max(d[mask1][j],d[mask^mask1][i]));
}
printf("%d\n",d[lim-1][0]);
}
return 0;
}