Pagini recente » Cod sursa (job #1209205) | Cod sursa (job #2453807) | Cod sursa (job #2395262) | Cod sursa (job #2964907) | Cod sursa (job #2969722)
#include <fstream>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n,i,j,f[105],a[105][105],m,d[105],x,y,dist,mx=999999999,poz,mi,k,p;
int main()
{
fin >>n>>p;
for (i=1; i<=n; i++)
{
for (j=1; j<=n; j++)
{
if (i==j) a[i][j]=0;
else a[i][j]=mx;
}
}
while(fin >>x>>y>>dist)
{
a[x][y]=dist;
}
d[p]=0;
d[0]=mx;
f[p]=1;
for (i=1; i<=n; i++)
{
f[i]=0;
d[i]=a[p][i];
}
for (k=1; k<n; k++)
{
poz=0;
mi=mx;
for (i=1; i<=n; i++)
{
if (d[i]!=0 && d[i]!=mx && f[i]==0 &&d[i]<mi)
{
mi=d[i];
poz=i;
}
}
f[poz]=1;
for (i=1; i<=n; i++)
{
if (f[i]==0 && d[poz]+a[poz][i]<d[i]) d[i]=d[poz]+a[poz][i];
}
}
for (i=1; i<=n; i++)
{
if (d[i]==mx) fout <<"-1 ";
else fout <<d[i]<<" ";
}
return 0;
}