Pagini recente » Cod sursa (job #1430252) | Cod sursa (job #1261142) | Cod sursa (job #1784104) | Cod sursa (job #2260983) | Cod sursa (job #1363654)
#include <iostream>
#include <fstream>
using namespace std;
int a[50][50],n,mini=32000,k,c[16],viz[50],ok;
void df(int v,int 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,s,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);
cout<<mini;
return 0;
}