Pagini recente » Cod sursa (job #2313189) | Cod sursa (job #1253041) | Cod sursa (job #1106799) | Cod sursa (job #837087) | Cod sursa (job #1604959)
#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("dijkstra.in");
ofstream cout("dijkstra.out");
vector<int> x[50004];
vector<int> co[50004];
int marked[50004], vec[50004];
void dijk(int vec[], int n)
{
int nod = 0, val = 0, ok = 1;
for(int i = 1; i < n; i++)
vec[i] = 1<<30;
while(ok){
ok = 0;
int ma = 1<<30;
for(int i = 0; i < n; i++)
if(vec[i] < ma && marked[i] == 0){
ma = vec[i];
nod = i;
}
marked[nod] = 1;
for(int i = 0; i < x[nod].size(); i++)
if(marked[x[nod][i]] == 0){
vec[x[nod][i]] = min(vec[x[nod][i]], vec[nod] + co[nod][i]);
ok = 1;
}
}
}
int main()
{
int n, m, c, a, b;
cin >> n >> m;
for(int i = 0; i < m; i++){
cin >> a >> b >> c;
x[a - 1].push_back(b - 1);
co[a - 1].push_back(c);
}
dijk(vec, n);
for(int i = 1; i < n; i++)
cout << (vec[i] != 1<<30 ? vec[i] : 0) << " ";
return 0;
}