Pagini recente » Cod sursa (job #2349641) | Cod sursa (job #619660) | Cod sursa (job #2903636) | Cod sursa (job #1899017) | Cod sursa (job #1614787)
#include <fstream>
#include <math.h>
#include <vector>
#include <set>
#include <algorithm>
#include <cstring>
//#include <unordered_map>
#include <iomanip>
#include <time.h>
#include <stdio.h>
#include <bitset>
#include <map>
#define MAX 500000000000
//#include <iostream>
using namespace std;
//ifstream cin("jocul.in");
//ofstream cout("jocul.out");
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
vector<int> nods[50003];
vector<int> costs[50003];
int x[50004];
void bellman(vector<int> costs[], vector<int> nods[], int vec[], int n)
{
int p = 0;
while(p < n){
for(int i = 0; i < n; i++)
{
for(int j = 0; j < nods[i].size(); j++){
if(vec[nods[i][j]] > costs[i][j] + vec[i])
vec[nods[i][j]] = costs[i][j] + vec[i];
}
}
p++;
}
}
int main()
{
int n, m, a, b, c;
cin >> n >> m;
for(int i = 0; i < m; i++){
cin >> a >> b >> c;
nods[a - 1].push_back(b - 1);
costs[a - 1].push_back(c);
}
for(int i = 1; i <= 50000; i++)
x[i] = 1<<29;
bellman(costs, nods, x, n);
for(int i = 1; i < n; i++)
cout << (x[i] == 1<<29 ? 0 : x[i]) << " ";
return 0;
}