Pagini recente » Cod sursa (job #804720) | Cod sursa (job #1123447) | Cod sursa (job #1887729) | Cod sursa (job #2047549) | Cod sursa (job #1993359)
#include <fstream>
#include <vector>
#include <deque>
#define INF 2000000000
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int i, n, m, a, b, cost, drum_curent, nodC, nod, drum_minim[50002], vizitat[50002];
struct graf
{
int nod, cost;
}aux;
vector <graf> v[50002];
deque <int> c;
int main()
{
f>>n>>m;
for(i = 1;i <= m; ++ i)
{
f>>a>>b>>cost;
aux.nod = b;
aux.cost = cost;
v[a].push_back(aux);
}
for(i = 2;i <= n; ++ i)
drum_minim[i] = INF;
c.push_back(1);
vizitat[1] = 1;
while(!c.empty())
{
nod = c.front();
for(i = 0;i < v[nod].size(); ++ i)
{
drum_curent = drum_minim[nod] + v[nod][i].cost;
nodC = v[nod][i].nod;
if(drum_curent < drum_minim[nodC])
{
drum_minim[nodC] = drum_curent;
if(vizitat[nodC] == 0)
{
c.push_back(nodC);
vizitat[nodC] = 1;
}
}
}
vizitat[c.front()] = 0;
c.pop_front();
}
for(i = 2;i <= n; ++ i)
{
if(drum_minim[i] == INF) g<<"0 ";
else g<<drum_minim[i]<<" ";
}
return 0;
}