Cod sursa(job #1363716)

Utilizator SerbanECicortas Serban SerbanE Data 27 februarie 2015 10:29:01
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
#include<algorithm>

using namespace std;
int a[2000][2000],n,k,c[16],viz[2000],ok;

int main()
{
    int m,i,j,nr=0,x,y,p[16],h;
    long mini=999999999,s;
    ifstream f("ubuntzei.in");
    ofstream g("ubuntzei.out");
    f>>n>>m;
    f>>k;
    for(i=1;i<=k;i++)
        f>>c[i];
    for(i=1;i<=m;i++)
    {
        f>>x>>y>>j;
        a[x][y]=a[y][x]=j;
    }
    for(h=1;h<=n;h++)
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                if(a[i][j]!=0 && a[i][h]!=0 && a[h][j]!=0 && (a[i][j]>a[i][h]+a[h][j]))
                    a[i][j]=a[i][h]+a[h][j];
    for(i=1;i<=k;i++)
        p[i]=i;
    do{
    s=a[1][c[p[1]]];
    for(i=2;i<=k;i++)
       s=s+a[c[p[i-1]]][c[p[i]]];
    s=s+a[c[p[k]]][n];
    if(s<mini)
        mini=s;
    }while(next_permutation(p,p+k));
    g<<mini;
    g.close();
    return 0;
}