Pagini recente » Cod sursa (job #2712423) | Cod sursa (job #2475135) | Cod sursa (job #2282013) | Cod sursa (job #520342) | Cod sursa (job #1363716)
#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;
}