Pagini recente » Cod sursa (job #1569731) | Monitorul de evaluare | Cod sursa (job #2551937) | Cod sursa (job #2946744) | Cod sursa (job #1571291)
#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] && x[pmin][j]!=0)
{
d[j]=d[pmin]+x[pmin][j];
}
}
}
}
}
int main()
{
int i,a,b,c;
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
x[a][b]=c;
}
d[0]=DX;
for(i=2;i<=n;i++) d[i]=DX;
dijkstra(1);
for(int i=2;i<=n;i++)
{
if(d[i]==DX)
fout<<"0 ";
else
fout<<d[i]<<" ";
}
return 0;
}