Pagini recente » Cod sursa (job #2044177) | Cod sursa (job #555611) | Cod sursa (job #2196108) | Cod sursa (job #1128571) | Cod sursa (job #873206)
Cod sursa(job #873206)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("ubuntzei.in");
ofstream g("ubuntzei.out");
using namespace std;
long n,m;
struct muchie {long x,y,c;} a[2001];
long d[2002], vector[2002],v[2002],k,val[2002];
int verific ()
{
int i;
for ( i=1; i<=k; i++ )
if ( v[vector[k]]==0 )
return 0;
return 1;
}
int exista ( int i )
{
int j;
for ( j=1; j<=k; j++ )
if ( vector[j]==i )
return 1;
return 0;
}
int main()
{
long i;
f>>n>>m;
f>>k;
for ( i=1; i<=k; i++ )
f>>vector[k];
for( i=1;i<=m;i++ )
{
f>>a[i].x>>a[i].y>>a[i].c;
if(a[i].x==1)
d[a[i].y]=a[i].c;
}
for( i=1;i<=n;i++)
if(d[i]==0)
d[i]=250001;
int gata=0;
while(!gata)
{
gata=1;
for( int i=1; i<=m; i++ )
{
if ( exista(i) && val[i]==0 )
{
gata=0;
d[a[i].y]=d[a[i].x]+a[i].c;
v[a[i].y]=1;
val[i]=1;
}
else
if(d[a[i].y]>d[a[i].x]+a[i].c)
{
gata=0;
d[a[i].y]=d[a[i].x]+a[i].c;
}
}
}
g<<d[n];
return 0;
}