Pagini recente » Cod sursa (job #3235624) | Cod sursa (job #3231211) | Cod sursa (job #2626644) | Cod sursa (job #2119572) | Cod sursa (job #2864328)
#include <list>
#include <fstream>
struct szomszed
{
int vegpont;
int suly;
};
using namespace std;
ifstream cin("ubuntzei.in");
ofstream cout("ubuntzei.out");
int m,n,kdb;
list<szomszed> v[2001];
list<int> kotelezovarosok;
bool k[2001];
unsigned long long minm=18446744073709551615;
bool jart[2001];
void melysegi(int csucs, unsigned long long osszeg)
{
k[csucs]=true;
jart[csucs]=true;
if (csucs==n)
{
bool megoldas=true;
for (int i:kotelezovarosok)
{
if(k[i]!=true)
megoldas=false;
}
if(megoldas)
{
if(osszeg<minm)
{
minm=osszeg;
}
}
}
else
{
for (szomszed l : v[csucs]){
if(!jart[l.vegpont]){
melysegi(l.vegpont,osszeg+l.suly);
}
}
jart[csucs]=false;
k[csucs]=false;
}
}
int main()
{
cin>>n>>m>>kdb;
for (int i=0; i<kdb; i++)
{
int a;
cin>>a;
kotelezovarosok.push_back((a));
}
for (int i=0; i<m; i++)
{
int a;
int b;
int c;
cin>>a>>b>>c;
szomszed l;
l.vegpont=b;
l.suly=c;
v[a].push_back(l);
l.vegpont=a;
v[b].push_back(l);
}
melysegi(1,0);
cout<<minm;
return 0;
}