Pagini recente » Cod sursa (job #2728859) | Cod sursa (job #3187491) | Cod sursa (job #517584) | Cod sursa (job #2708506) | Cod sursa (job #688172)
Cod sursa(job #688172)
#include <stdio.h>
using namespace std;
int main ()
{
freopen ("dijkstra.in","r",stdin);
freopen ("dijkstra.out","w",stdout);
int a[500][500]={0}, d[500], s[500]={0}, t[500]={0}, n, m, x, y, z, i, j, min;
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++)
for(j=1;j<=n;j++)
if (i!=j)
a[i][j]=10000;
for(i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
a[x][y]=z;}
for(i=1;i<=n;i++){
d[i]=a[1][i];
if (d[i]<10000)
t[i]=1;}
t[1]=0;
d[1]=0;
s[1]=1;
for(i=1;i<n;i++){
min=10000;
for(j=1;j<=n;j++)
if(s[j]==0 && d[j]<min){
min=d[j];
x=j;}
if (min==10000)
break;
else {
s[x]=1;
for (j=1;j<=n;j++)
if(s[j]==0&&d[j]>d[x]+a[x][j]){
d[j]=d[x]+a[x][j];
t[j]=x;}}}
for(i=2;i<=n;i++)
printf("%d ",d[i]);
return 0;
}