Pagini recente » Cod sursa (job #813433) | Cod sursa (job #2849839) | Cod sursa (job #2624737) | Cod sursa (job #1563373) | Cod sursa (job #681732)
Cod sursa(job #681732)
#include <fstream>
#include <iostream>
using namespace std;
int a[2001][2001],b[2001],v[2001],n,m,kk;
long legjobb=10000000;
bool l[2001];
void ki(int k)
{
int i,hossz=0;
for (i=1;i<=k-1;i++)
hossz=hossz+a[v[i]][v[i+1]];
if (hossz<legjobb) legjobb=hossz;
}
int megoldas(int k)
{
int van=1,i,j;
if (v[k]!=n) return 0;
for (i=1;i<=kk && van==1;i++)
if (l[b[i]]==0) van=0;
if (van==0) return 0;
return 1;
}
void back(int k)
{
int i;
for (i=2;i<=n;i++)
if ((a[v[k-1]][i]!=0) && (l[i]==0))
{
v[k]=i; l[i]=1;
if (megoldas(k)) ki(k);
else back(k+1);
l[i]=0;
}
}
int main()
{
ifstream f("ubuntzei.in",ios::in);
ofstream g("ubuntzei.out",ios::out);
int i,x,y,z;
f>>n>>m;
f>>kk;
for (i=1;i<=kk;i++) f>>b[i];
for (i=1;i<=m;i++)
{
f>>x>>y>>z;
a[x][y]=z;
}
v[1]=1; l[1]=1;
back(2);
g<<legjobb;
g.close();
return 0;
}