Cod sursa(job #2285955)

Utilizator stelian2000Stelian Chichirim stelian2000 Data 19 noiembrie 2018 16:30:06
Problema Cast Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#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;
}