Pagini recente » Cod sursa (job #898456) | Cod sursa (job #2533596) | Cod sursa (job #2730174) | Cod sursa (job #2743061) | Cod sursa (job #2365807)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int n,m,a,b,c,i,x[1001][1001],j,d[1001],tata[1001],viz[1001],k,ok,mn;
int main()
{f>>n>>m;
for(i=1;i<=m;i++)
{
f>>a>>b>>c;
x[a][b]=c;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(i==j)
x[i][j]=0;
else
{
if(x[i][j]==0)
x[i][j]=99999;
}
}
}
d[1]=0;
tata[1]=0;
for(i=2;i<=n;i++)
{
d[i]=x[1][i];
tata[i]=1;
}
k=1;
ok=1;
viz[1]=1;
while(ok)
{
mn=99999;
for(i=1;i<=n;i++)
{
if(viz[i]==0)
{
if(mn>d[i])
{mn=d[i];
k=i;
}
}
}
if(mn!=99999)
{
viz[k]=1;
for(i=1;i<=n;i++)
{
if(viz[i]==0 and d[k]+x[k][i]<d[i])
{d[i]=d[k]+x[k][i];
tata[i]=k;
}
}
}
else
ok=0;
}
for(i=2;i<=n;i++)
g<<d[i]<<" ";
return 0;
}