Pagini recente » Cod sursa (job #1510194) | Cod sursa (job #1480504) | Cod sursa (job #873224) | Cod sursa (job #3288442) | Cod sursa (job #311804)
Cod sursa(job #311804)
#include <stdio.h>
#define DIM 50005
#define INF 1<<31-1
struct nod
{
int x,ct;
nod *urm;
} *lst[DIM];
int cost[DIM],viz[DIM];
int n,m;
void add (int a,int b,int c)
{
nod *p=new nod;
p->x=b;
p->ct=c;
p->urm=lst[a];
lst[a]=p;
}
void read ()
{
int i,x,y,cs;
scanf ("%d%d",&n,&m);
for (i=1; i<=m; ++i)
{
scanf ("%d%d%d",&x,&y,&cs);
add (x,y,cs);
}
}
void init ()
{
int i;
for (i=2; i<=n; ++i)
cost[i]=INF;
}
void solve ()
{
nod *p;
int i,j,min,imin;
for (i=1; i<=n; ++i)
{
min=INF;
for (j=1; j<=n; ++j)
if (cost[j]<min && !viz[j])
{
min=cost[j];
imin=j;
}
viz[imin]=1;
for (p=lst[imin]; p; p=p->urm)
if (cost[imin]+p->ct<cost[p->x])
cost[p->x]=cost[imin]+p->ct;
}
}
void print ()
{
int i;
for (i=2; i<=n; ++i)
if (cost[i]!=INF)
printf ("%d ",cost[i]);
else
printf ("0 ");
}
int main ()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
read ();
init ();
solve ();
print ();
return 0;
}