Cod sursa(job #1121358)

Utilizator HDT_TibiHudema Dumitru Tiberiu HDT_Tibi Data 25 februarie 2014 12:37:28
Problema Ubuntzei Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include<algorithm>
#define NMAX 999999999;
using namespace std;

ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");

int a[2001][2001],n,m,l,loc[16],s;

void initializare()
{
    int i,j;
    for(i=1; i<=n; i++)
        for(j=1; j<=n; j++)
            a[i][j]=NMAX;
    for(i=1;i<=n; i++)a[i][i]=0;
}

int main()
{
    int i,j,k,x,y,c,mini;
    fin>>n>>m>>l;
    for(i=1; i<=l; i++)fin>>loc[i];
    initializare();
    for(i=1; i<=m; i++)
    {
        fin>>x>>y>>c;
        a[x][y]=c;a[y][x]=c;
    }
    for(k=1;k<=n; k++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(a[i][j]>a[i][k]+a[k][j])
                    a[i][j]=a[i][k]+a[k][j];

    k=1;
    mini=NMAX;
    do{
        //for(i=1; i<=l; i++) fout<<loc[i]<<" ";fout<<endl;
        s=0;
        for(i=1; i<=l; i++)
        {
            s+=a[k][loc[i]];
            k=loc[i];
        }s+=a[k][n];
        if(s<mini)mini=s;
    }while(next_permutation(loc+1,loc+l+1));
    fout<<mini;
    return 0;
}