Pagini recente » Cod sursa (job #3351617) | Cod sursa (job #3349660) | Cod sursa (job #1547049) | Cod sursa (job #3347675) | Cod sursa (job #1072907)
#include <fstream>
#include <iostream>
using namespace std;
const int inf=1<<30;
const int Nmax=23170;
int mat[Nmax][Nmax],v[Nmax], d[Nmax], t[Nmax],m,n;
ofstream out("dijkstra.out");
void dijkstra(int ns)
{
int nod, i, j, minn=inf,ok=1;
for(i=1; i<=n; i++)
{
d[i]=mat[ns][i];
t[i]=ns;
}
d[ns]=0;
v[ns]=1;
while(ok==1)
{
minn=inf;
for(i=1; i<=n; i++)
if(!v[i] && d[i]<minn)
{
minn=d[i];
nod=i;
}
if(minn==inf) ok=0;
else
{
v[nod]=1;
for(i=1; i<=n; i++)
{
if( (v[i]==0) && (d[i]>(d[nod]+mat[nod][i])))
{
d[i]=d[nod]+mat[nod][i];
t[i]=nod;
}
}
}
}
}
int main()
{
ifstream in("dijkstra.in");
in>>n>>m;
int i,j,a,b,c;
for(i=1; i<=n; i++)
for(j=1; j<=n; j++)
mat[i][j]=inf;
for(i=1; i<=m; i++)
{
in>>a>>b>>c;
mat[a][b]=c;
}
in.close();
dijkstra(1);
for(i=2; i<=n; i++)
out<<d[i]<<" ";
// scoate_drum(3);
return 0;
}