Pagini recente » Cod sursa (job #876028) | Borderou de evaluare (job #1653990) | Monitorul de evaluare | Cod sursa (job #2767451) | Cod sursa (job #1628072)
#include <fstream>
#define InFile "dijkstra.in"
#define OutFile "dijkstra.out"
#define nmax 50002
#define mmax 250002
#define inf 200000000
using namespace std;
ifstream fin (InFile);
ofstream fout (OutFile);
struct muchie
{
long x, y, c;
} G[mmax];
long D[nmax], M, N;
long i, x, y, c, ok;
int main ()
{
fin >> N >> M;
for (i=1; i<=M; i++)
{
fin >> x >> y >> c;
G[i].x = x;
G[i].y = y;
G[i].c = c;
if (x == 1)
D[y] = c;
}
for (i=2; i<=N; i++)
if (D[i] == 0)
D[i] = inf;
while (ok == 0)
{
ok = 1;
for (i=1; i<=M; i++)
if (D[G[i].y]>D[G[i].x]+G[i].c)
{
D[G[i].y] = D[G[i].x]+G[i].c;
ok = 0;
}
}
for (i=2; i<=N; i++)
if (D[i]!=inf)
fout << D[i] << ' ';
else
fout << 0 << ' ';
return 0;
}