Pagini recente » Cod sursa (job #676069) | Cod sursa (job #441436) | Cod sursa (job #1126448) | Cod sursa (job #308053) | Cod sursa (job #2300466)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 50001
using namespace std;
ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");
struct arc
{
int vf, pond;
} a;
vector <arc> la[nmax];
bool viz[nmax];
int d[nmax], T[nmax], oo=1<<30, i, j, minim, poz, sursa, n, x, y, z, m;
int main()
{f>>n>>m;
sursa=1;
while (f>>x>>y>>z)
{
arc a ={y, z};
la[x].push_back(a);
}
fill (d, d+nmax, oo);
d[sursa]=0;
for (i=1; i<=n-1; i++)
{
minim=oo;
for (j=1; j<=n; j++)
if (viz[j]!=1 && d[j]<minim)
minim=d[j], poz=j;
viz[poz]=1;
for (j=0 ;j<la[poz].size(); j++)
{
int v=la[poz][j].vf;
int c=la[poz][j].pond;
if (d[v]>d[poz]+c)
{
d[v]=d[poz]+c;
T[v]=poz;
}
}
}
for (i=2; i<=n; i++)
{
if (d[i]==oo)
g<<0<<' ';
else
//cout.width(4);
g<<d[i]<<' ';
}
return 0;
}