Pagini recente » Cod sursa (job #1083234) | Cod sursa (job #1075532) | Cod sursa (job #2797871) | Cod sursa (job #2988114) | Cod sursa (job #1519373)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define nmax 50005
#define mmax 250005
#define inf 1<<30
using namespace std;
int m, n, d[nmax];
vector < pair<int, int> > T[nmax];
queue < pair<int, int> > Q;
void read(){
int x, y, cost;
ifstream f("dijkstra.in");
f >> n >> m;
for(int i=1; i<=m; i++){
f >> x >> y >> cost;
T[x].push_back(make_pair(y, cost));
}
}
int dijkstra(){
int nod, v = 0, w = 0;
while(!Q.empty()){
nod = Q.front().first;
Q.pop();
for(int i=0; i<T[nod].size(); i++){
v = T[nod][i].first;
w = T[nod][i].second;
if(d[v] > d[nod] + w){
d[v] = d[nod] + w;
Q.push(make_pair(v, d[v]));
}
}
}
}
int main()
{
read();
d[1] = 0;
for(int i=2; i<=n; i++)
d[i] = inf;
Q.push(make_pair(1, d[1]));
dijkstra();
ofstream g("dijkstra.out");
for(int i=2; i<=n; i++)
if(d[i] != inf)
g << d[i] << " ";
else
g << 0 << " ";
return 0;
}