Pagini recente » Cod sursa (job #1036972) | Cod sursa (job #387899) | Cod sursa (job #669600) | Istoria paginii runda/prega_oji2015_vi_2/clasament | Cod sursa (job #213301)
Cod sursa(job #213301)
#include<stdio.h>
#define NMAX 301
#define INF 501000000
int z[NMAX],q[NMAX*NMAX],d[NMAX],b,c,in,sf,x[NMAX][NMAX],y[NMAX][NMAX],i,j,n,m,k,l,a,s,w[NMAX][NMAX];
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
x[a][b]=c;
x[b][a]=c;
y[a][++y[a][0]]=b;
y[b][++y[b][0]]=a;
}
q[++sf]=1;
for (i=2;i<=n;i++)
d[i]=INF;
in++;
while (in<=sf)
{
for (i=1;i<=y[q[in]][0];i++)
if (d[q[in]]+x[q[in]][y[q[in]][i]]<d[y[q[in]][i]])
{
d[y[q[in]][i]]=d[q[in]]+x[q[in]][y[q[in]][i]];
if (!z[y[q[in]][i]])
{
q[++sf]=y[q[in]][i];
z[y[q[in]][i]]=1;
}
}
z[q[in]]=0;
in++;
}
for (i=2;i<=n;i++)
if (d[i]!=INF)
printf("%d ",d[i]);
else
printf("0 ");
printf("\n");
return 0;
}