Pagini recente » Cod sursa (job #1635059) | Cod sursa (job #1200486) | Cod sursa (job #2998595) | Cod sursa (job #748709) | Cod sursa (job #2459230)
#include <fstream>
#include <climits>
#include <queue>
#include <vector>
#define inf INT_MAX
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
vector < pair <int, int> > graph[50001];
queue <int> q;
int viz[50001], i, x, y, n, m, d[50001], c, Min, j, node;
int main()
{ f >> n >> m;
for(i = 1; i <= m; i++){
f >> x >> y >> c;
graph[x].push_back({y,c});
}
for(i = 2; i <= n; i++)
d[i] = inf;
for(i = 1; i <= n; i++){
Min = inf;
for(j = 1; j <= n; j++)
if(d[j] < Min && viz[j] == 0){
Min = d[j];
node = j;
}
for(j = 0; j < graph[node].size(); j++){
int new_node = graph[node][j].first;
int cost = graph[node][j].second;
if(d[new_node] > Min + cost && viz[new_node] == 0)
d[new_node] = Min + cost;
}
viz[node] = 1;
}
for(i = 2; i <= n; i++)
if(d[i] == inf)
g << 0 << ' ';
else
g << d[i] << ' ';
return 0;
}