Luci
Luci
#include <fstream>
fstream f("ubuntzei.in",ios::in);
fstream g("ubuntzei.out",ios::out);
void tipar(int k)
{
s=0;
for(i=2;i<=k;i++)s=s+a[i-1][i];
if(s<min1)min1=s;
int solutie(int k)
{
int ok=1;
for(i=1;i<=q;i++)if(viz[i]==0)ok=0;
if(k==n&&ok==1)return 1;
else return 0;
}
int exista(int k)
{
if(v[k]<n)return 1;
else return 0;
}
int cont(int k)
{
int ok=1;
for(i=1;i<=k-1;i++)
if(v[k]==v[i])ok=0;
for(i=1;i<=q;i++)if(v[k]==v[i])viz[i]=1;
return ok;
}
void bkt()
{
v[1]=1;
k=2;
while(k>1)
if(exista(k))
{
v[k]++;if(cont(k))if(solutie(k))tipar(k);
else
{
k++;
v[k]=0;
}
}
else k--;
}
int main()
{
f>>n>>m;
f>>q;
for(i=1;i<=q;i++)f>>w[i];
for(i=1;i<=m;i++)
{
f>>x>>y>>z;
a[x][y]=a[y][x]=z;
}
bkt();
g<<min1;
f.close();
g.close();
return 0;
}