Pagini recente » Cod sursa (job #1724120) | Cod sursa (job #1675575) | Cod sursa (job #507184) | Cod sursa (job #426050) | Cod sursa (job #320077)
Cod sursa(job #320077)
# include <stdio.h>
int s[50001],d[50001],i,j,n,m,poz,x,y,z,min,inf=32000;
struct nod
{
int info,cost;
nod *urm;
}*a[50001],*p,*v;
int main ()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
scanf ("%i%i",&n,&m);
for (i=1;i<=m;i++)
{
scanf ("%i%i%i",&x,&y,&z);
p=new nod;
p->info=y;
p->cost=z;
p->urm=a[x];
a[x]=p;
if (x==1)
d[y]=z;
}
for (i=1;i<=n;i++)
if (d[i]==0)
d[i]=inf;
s[1]=1;
for (i=1;i<=n;i++)
{
min=inf;
for (j=1;j<=n;j++)
if (s[j]==0 && min>d[j])
{
min=d[j];
poz=j;
}
s[poz]=1;
p=a[poz];
while (p)
{
if (d[p->info]>d[poz]+p->cost)
d[p->info]=d[poz]+p->cost;
p=p->urm;
}
}
for (i=2;i<=n;i++)
if (d[i]!=inf)
printf ("%i ",d[i]);
else
printf ("0 ");
return 0;
}