Pagini recente » Cod sursa (job #2617379) | Cod sursa (job #901944) | Cod sursa (job #1982550) | Cod sursa (job #2884048) | Cod sursa (job #906754)
Cod sursa(job #906754)
#include <cstdio>
#include<cmath>
#define nmax 50001
using namespace std;
int n,d[nmax],l[nmax];
int minim()
{
int mi,q,pmin;
mi=1001;
pmin=0;
for (q=1;q<=n;q++)
if (!d[q]&&l[q]<mi)
{
pmin=q; mi=l[q];
}
return pmin;
}
int main()
{ int m,a[nmax][nmax],i,j;
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++)
a[i][j]=1001;
int e1,e2;
for (i=1;i<=m;i++)
{
scanf("%d%d",&e1,&e2);
scanf("%d",&a[e1][e2]);
}
int f=1,min; d[1]=1;
for (i=1;i<=m;i++)
if (a[1][i]!=1001)
l[i]=a[1][i];
else l[i]=1001;
while (f)
{
min=minim();
if (min==0)
f=0;
else
{
d[min]=1;
for (i=1;i<=n;i++)
if (!d[i]&&(l[i]>l[min]+a[min][i]))
l[i]=l[min]+a[min][i];
}
}
for (i=2;i<=n;i++)
{ if (l[i]!=1001)
printf("%d ",l[i]);
else printf("%d ",0);
}
fclose(stdin);
fclose(stdout);
return 0;
}