Pagini recente » Cod sursa (job #2471529) | Cod sursa (job #1578208) | Cod sursa (job #2622574) | Cod sursa (job #753446) | Cod sursa (job #1338261)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("djikstra.in");
ofstream g("djikstra.out");
int n,x0,p,c[100][100],d[100],pre[100],m[100];
#define inf 100000;
void initializare()
{
int i,a,b,c1,j;
f>>n>>p;
x0=1;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
c[i][j]=c[j][i]=inf;
for(i=1;i<=p;i++)
{
f>>a>>b>>c1;
c[a][b]=c1;
}
for(i=1;i<=n;i++)
d[i]=c[x0][i],pre[i]=x0;
pre[x0]=0;
m[x0]=1;
}
void afisare()
{
int i;
for(i=2;i<=n;i++) g<<d[i]<<" ";
}
int main()
{
int vfmin,dmin,i,j;
initializare();
for(j=1;j<=n;j++)
{
dmin=inf;
for(i=1;i<=n;i++)
if(!m[i] && dmin>d[i])
{
dmin=d[i];
vfmin=i;
}
m[vfmin]=1;
for(i=1;i<=n;i++)
if(!m[i] && d[i]>dmin+c[vfmin][i])
{
pre[i]=vfmin;
d[i]=dmin+c[vfmin][i];
}
}
afisare();
}