Pagini recente » Cod sursa (job #2220708) | Cod sursa (job #3153370) | Cod sursa (job #1527376) | Cod sursa (job #985058) | Cod sursa (job #1363660)
#include <iostream>
#include <fstream>
using namespace std;
int a[2000][2000],n,k,c[16],viz[2000],ok;
long mini=999999999;
void df(int v,long s,int nr)
{
int i,j;
if(v==n)
{
if(nr==k)
if(s<mini)
mini=s;
return;
}
else
{
viz[v]=1;
for(i=1;i<=n;i++)
if(a[i][v]!=0 && viz[i]==0)
{
ok=0;
for(j=1;j<=k;j++)
if(i==c[j])
{
ok=1;
}
if(ok==0)
df(i,s+a[i][v],nr);
else
df(i,s+a[i][v],nr+1);
}
}
viz[v]=0;
}
int main()
{
int m,i,j,nr=0,x,y;
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;
}
df(1,0,0);
g<<mini;
g.close();
return 0;
}