Cod sursa(job #1551410)

Utilizator george_stelianChichirim George george_stelian Data 15 decembrie 2015 20:40:55
Problema Cast Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#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)&mask;mask1;mask1=(mask1-1)&mask)
                        for(int j=0;j<n;j++)
                            if(j!=i && mask1&(1<<j) && (mask1&(1<<i))==0) 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;
}