Pagini recente » Cod sursa (job #835394) | Cod sursa (job #2064501) | Cod sursa (job #219682) | Cod sursa (job #3332) | Cod sursa (job #1571735)
#include<iostream>
#include<fstream>
#include<vector>
#define DX 9999999
#define NMAX 30000
using namespace std;
fstream fin("dijkstra.in",ios::in),fout("dijkstra.out",ios::out);
int n,m,d[NMAX],ap[NMAX];
short x[NMAX][NMAX];
int minim()
{
int pmin=0;
for(int i=1;i<=n;i++)
{
if(d[i]<d[pmin] && ap[i]==0)
{
pmin=i;
}
}
return pmin;
}
void dijkstra(int nod)
{
int pmin,i,j;
for(i=1;i<=n;i++)
{
pmin=minim();
if(pmin!=0)
{
ap[pmin]=1;
for(j=2;j<=n;j++)
{
if(d[j]>d[pmin]+x[pmin][j])
{
d[j]=d[pmin]+x[pmin][j];
}
}
}
}
}
int main()
{
int i,j,a,b,c;
fin>>n>>m;
for(i=1;i<=n;i++) for(j=1;j<=n;j++) x[i][j]=NMAX;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
x[a][b]=c;
//x[b][a]=c;
}
d[1]=0;
d[0]=DX;
for(i=2;i<=n;i++) d[i]=DX;
dijkstra(1);
for(int i=2;i<=n;i++)
{
if(d[i]==NMAX||d[i]==DX)
fout<<"0 ";
else
fout<<d[i]<<" ";
}
return 0;
}