Pagini recente » Cod sursa (job #1581712) | Cod sursa (job #776695) | Cod sursa (job #1047527) | Cod sursa (job #521575) | Cod sursa (job #187091)
Cod sursa(job #187091)
#include<stdio.h>
#define INF 2000000000
long d[2000],fol[2000],sol[2000][2000],n,m,i,j,a,b,c;
void rezolva();
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
sol[i][j]=INF;
for (i=1;i<=m;i++)
scanf("%d %d %d",&a,&b,&c),sol[a][b]=c,sol[b][c]=c;
rezolva();
for (i=2;i<=n;i++)
printf("%d ",d[i]);
return 0;
}
void rezolva()
{long min,nod;
for (i=2;i<=n;i++)
d[i]=sol[1][i];
fol[1]=1;
c=1;
while(1)
{
min=INF;
for (i=1;i<=n;i++)
if (sol[c][i]<min && !fol[i])
{
min = sol[c][i];
nod =i;
}
fol[nod]=1;
c=nod;
if (min == INF)
break;
else
for (i=0;i<=n;i++)
if (d[i]> d[nod] + sol[nod][i] )
d[i] = d[nod] + sol[nod][i];
}
}