Pagini recente » Cod sursa (job #1107416) | Cod sursa (job #1258198) | Cod sursa (job #3183744) | Cod sursa (job #3222543) | Cod sursa (job #883549)
Cod sursa(job #883549)
#include <cstdio>
int n,m,i,j,x,y,cost;
int inf=10000,dmin,vmin;
int a[50010][50010],p[50010],d[50010],s[50010];
int main()
{
freopen("djikstra.in","r",stdin);
freopen("djikstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=inf;
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&x,&y,&cost);
a[x][y]=cost;
}
for(i=1;i<=n;i++)
{
p[i]=0;
d[i]=inf;
s[i]=0;
if(a[1][i]<inf)
{
d[i]=a[1][i];
p[i]=1;
}
}
s[1]=1;
for(j=1;j<=n;j++)
{
dmin=inf;
vmin=0;
for(i=1;i<=n;i++)
if(s[i]==0 && d[i]<dmin)
{
dmin=d[i];
vmin=i;
}
if(vmin!=0)
{
s[vmin]=1;
for(i=1;i<=n;i++)
if(a[vmin][i]<inf)
if(d[i]>d[vmin]+a[vmin][i])
{
d[i]=d[vmin]+a[vmin][i];
p[i]=vmin;
}
}
}
for(i=2;i<=n;i++)
printf("%d ",d[i]);
printf("\n");
return 0;
}