Pagini recente » Cod sursa (job #284124) | Cod sursa (job #1398542) | Cod sursa (job #1672869) | Cod sursa (job #1214736) | Cod sursa (job #677411)
Cod sursa(job #677411)
#include<iostream>
#include<fstream>
#define DN 10005
using namespace std;
ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");
int n, m, d[DN], ks[DN], k, l=0;
struct nod
{
int nod1, nod2, c;
nod *urm;
}*a[2001], *p;
void creare(int x, int y, int cost)
{
nod *q=new nod;
q->nod1=x;
q->nod2=y;
q->c=cost;
q->urm=a[1];
a[1]=q;
}
int main()
{
int i, ok=1,x,y,z;
fin>>n>>m>>k;
for(i=2;i<=n;i++)
d[i]=999999;
for(i=1;i<=k;i++)
fin>>ks[i];
for(i=1;i<=m;i++)
{
fin>>x>>y>>z;
creare(x,y,z);
if(x==1)
d[y]=z;
}
while(ok)
{
p=a[1];ok=0;
while(p)
{
if(d[p->nod2]>d[p->nod1]+p->c)
{
d[p->nod2]=d[p->nod1]+p->c; ok=1;
}
p=p->urm;
}
}
for(int j=1; j<=k;j++)
l+=d[ks[j]];
d[ks[k]]=l;
while(ok)
{
p=a[ks[k]];ok=0;
while(p)
{
if(d[p->nod2]>d[p->nod1]+p->c)
{
d[p->nod2]=d[p->nod1]+p->c; ok=1;
}
p=p->urm;
}
}
if(k==0)
fout<<d[n];
else
fout<<d[n];
}