Pagini recente » Cod sursa (job #6512) | Cod sursa (job #315919) | Cod sursa (job #816476) | Cod sursa (job #1235647) | Cod sursa (job #329724)
Cod sursa(job #329724)
#include <fstream.h>
#define MaxN 10009
#define MaxM 250009
#define Inf 1000009
ofstream fout("dijkstra.out");
int a[MaxN][MaxN],m,d[MaxN],s[MaxN],t[MaxN],nod,n;
void cit()
{
int i,j,x,y,c;
ifstream fin("dijkstra.in");
fin>>n>>m; nod=1;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
{
a[i][j]=Inf;
if(i==nod)
d[j]=Inf;
}
for(i=1;i<=m;i++)
{
fin>>x>>y>>c;
a[x][y]=c;
if(x==nod)
{
d[y]=c;
t[y]=nod;
}
}
}
int min()
{
int i,val=Inf,poz=0;
for(i=1;i<=n;i++)
if(!s[i] && d[i]<val)
{
val=d[i];
poz=i;
}
return poz;
}
void dijkstra()
{
int poz,nr=1,i;
s[nod]=1;
while(nr<n)
{
poz=min();
s[poz]=1; nr++;
for(i=1;i<=n;i++)
if(!s[i] && d[poz]+a[poz][i]<d[i])
{
d[i]=d[poz]+a[poz][i];
t[i]=poz;
}
}
}
void afis()
{
int i;
for(i=2;i<=n;i++)
fout<<d[i]<<" ";
fout.close();
}
int main()
{
cit();
dijkstra();
afis();
return 0;
}