Cod sursa(job #1363654)
| Utilizator | Data | 27 februarie 2015 09:35:59 | |
|---|---|---|---|
| Problema | Ubuntzei | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.02 kb |
#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;
}
