Pagini recente » Cod sursa (job #612427) | Cod sursa (job #1949031) | Cod sursa (job #2464733) | Cod sursa (job #1957638) | Cod sursa (job #257082)
Cod sursa(job #257082)
#include<fstream.h>
#include<stdio.h>
#define inf 2000000000
#define maxm 250003
#define maxn 50003
long int d[maxn],n,m,mt[maxm][3],x,y,z;
void citire()
{
freopen("dijkstra.in","r",stdin);
scanf("%d%d",&n,&m);
for(long int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
mt[i][0]=x;
mt[i][1]=y;
mt[i][2]=z;
}
}
void init()
{
long int i;
for(i=2;i<=n;i++)
d[i]=inf;
}
int dij()
{
long int i,ok=0;
for(i=1;i<=m;i++)
if(d[mt[i][1]]>d[mt[i][0]]+mt[i][2])
{
d[mt[i][1]]=d[mt[i][0]]+mt[i][2];
ok=1;
}
return ok;
}
int main()
{
freopen("dijkstra.out","w",stdout);
citire();
init();
for(long int i=1;i<=m;i++)
if(mt[i][0]==1)
d[mt[i][1]]=mt[i][2];
while(dij())
{
dij();
}
for(i=1;i<=n;i++)
{
if(d[i]!=inf)
{
printf("%ld",d[i]);
printf(" ");
}
else
printf("0 ");
}
return 0;
}