Pagini recente » Cod sursa (job #2752880) | Cod sursa (job #1097403) | Cod sursa (job #2858656) | Cod sursa (job #113073) | Cod sursa (job #1921266)
#include <fstream>
using namespace std;
ifstream fin("ubuntzei.in");
ofstream fout("ubuntzei.out");
struct lista
{
int x,cost;
lista* urm;
};
lista* v[2001],*p;
int n,m,k,a,b,c,i,dist[2001],drum[2001],fost[2001],mini,poz,ok,pri[2001];
int inserare(lista*& start,int k,int cost)
{
lista* nou;
nou=new lista;
nou->x=k;
nou->cost=cost;
nou->urm=start;
start=nou;
}
int main()
{
fin>>n>>m;
fin>>k;
for(i=1;i<=k;i++) fin>>pri[i];
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
inserare(v[a],b,c);
inserare(v[b],a,c);
}
for(i=1;i<=n;i++)
{
//fost[i]=0;
dist[i]=99999999;
//drum[i]=0;
}
dist[1]=0;
ok=1;
while(ok)
{
mini=999999999;
poz=0;
for(i=1;i<=n;i++)
if(fost[i]==0&&dist[i]<mini)
{
mini=dist[i];
poz=i;
}
if(poz==0) ok=0;
else
{
p=v[poz];
fost[poz]=1;
while(p!=NULL)
{
if(fost[p->x]==0)
{
if(dist[p->x]>dist[poz]+p->cost)
{
dist[p->x]=dist[poz]+p->cost;
drum[p->x]=poz;
}
}
p=p->urm;
}
}
}
fout<<dist[n];
return 0;
}