Cod sursa(job #1094562)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 29 ianuarie 2014 16:16:26
Problema Ubuntzei Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#include<algorithm>
using namespace std;
int a[2005][2005],n,m,q,c[15],sol=(1<<29),x,y,z;
ifstream in("ubuntzei.in"); ofstream out("ubuntzei.out");
int main(){
    //sol 50
    in>>n>>m>>q;
    for(int i=1;i<=q;++i) in>>c[i]; c[0]=1; c[q+1]=n;
    for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) a[i][j]=sol;
    for(int i=1;i<=m;++i){
        in>>x>>y>>z;
        a[i][i]=0;
        a[x][y]=a[y][x]=z;
    }
    for(int k=1;k<=n;++k)
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                a[i][j]=min(a[i][j],a[i][k]+a[k][j]);
    sort(c+1,c+q+1);
    do{
        int acm=0;
        for(int i=0;i<=q;++i) acm+=a[c[i]][c[i+1]];
        sol=min(acm,sol);
    }while(next_permutation(c+1,c+q+1));
    out<<sol<<'\n';
}