Pagini recente » Cod sursa (job #496373) | Cod sursa (job #1323910) | Cod sursa (job #610383) | Cod sursa (job #1945349) | Cod sursa (job #401674)
Cod sursa(job #401674)
#include<fstream.h>
#define NMaxVF 50001
#define Inf 1001
fstream fin("dijkstra.in",ios::in);
fstream fout("dijkstra.out",ios::out);
int pre[NMaxVF],n,x0=1;
double Cost[NMaxVF][NMaxVF],d[NMaxVF];
int M[NMaxVF];
void Initializare()
{
int i,j,m,x,y,c;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
Cost[i][j]=Cost[j][i]=Inf;
for(i=0;i<m;i++)
{
fin>>x>>y>>c;
Cost[x][y]=Cost[y][x]=c;
}
for(i=1;i<=n;i++)
{
pre[i]=x0;
d[i]=Cost[x0][i];
}
pre[x0]=0;
M[x0]=1;
}
void Dijkstra()
{
int i,j,VfMin;
double dMin;
for(i=1;i<n;i++)
{
dMin=Inf;
for(j=1;j<=n;j++)
if(!M[j]&&d[j]<dMin)
{ dMin=d[j]; VfMin=j; }
M[VfMin]=1;
for(j=1;j<=n;j++)
if(!M[j]&&d[j]>dMin+Cost[VfMin][j])
{
pre[j]=VfMin;
d[j]=dMin+Cost[VfMin][j];
}
}
}
void Afisare()
{
int i;
for(i=2;i<=n;i++)
fout<<d[i]<<" ";
}
int main()
{
Initializare();
Dijkstra();
Afisare();
return 0;
}