Pagini recente » Cod sursa (job #3275135) | Cod sursa (job #2291701) | Cod sursa (job #1901361) | Cod sursa (job #2702602) | Cod sursa (job #250854)
Cod sursa(job #250854)
#include <iostream.h>
#include <fstream.h>
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,s[50000],min,a[50000][50000],k,d[50000],nod;
/*void drum(int i)
{if (i!=1) drum(t[i]);
fout<<i<<" ";
} */
int main()
{int i,j,c,r;
fin>>n>>k;
k=1;
while(fin>>i>>j>>c)
a[i][j]=a[j][i]=c;
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
if (i!=j && a[i][j]==0)
a[i][j]=32000;
for (i=1;i<=n;i++)
{d[i]=a[i][k];
// t[i]=1;
}
// t[k]=0;
s[k]=1;
for (r=1;r<n;r++)
{min=30000;
for (i=1;i<=n;i++)
if (!s[i] && min>d[i])
{nod=i;
min=d[i];
}
s[nod]=1;
for (i=1;i<=n;i++)
if (!s[i] && d[i]>d[nod]+a[nod][i])
{d[i]=d[nod]+a[nod][i];
//t[i]=nod;
}
}
/*for (i=2;i<=n;i++)
{drum(i);
fout<<d[i]<<endl;
}*/
for (i=2;i<=n;i++)
fout<<d[i]<<" ";
fout.close();
return 0;
}