Pagini recente » Cod sursa (job #1772393) | Cod sursa (job #210658) | Cod sursa (job #2444385) | Cod sursa (job #2445199) | Cod sursa (job #1480720)
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
#include <map>
#define MAX 100005
#define INFINITY (1 << 30)
using namespace std;
vector <pair<int, int>> gr[MAX];
int dmin[MAX];
void dijkstra(int v[MAX], int n, int start) {
queue<int> q;
for(int i = 1; i <= n; ++i){
v[i] = INFINITY;
}
v[start] = 0;
q.push(start);
while(!q.empty()) {
int node = q.front();
q.pop();
for(int i = 0; i < gr[node].size(); ++i){
int x = v[node] + gr[node][i].second;
if(x < v[gr[node][i].first]) {
v[gr[node][i].first] = x;
q.push(gr[node][i].first);
}
}
}
}
int main() {
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int n, m, a, b, c;
cin >> n >> m;
for(int i = 0; i < m; ++i) {
cin >> a >> b >> c;
gr[a].push_back(make_pair(b, c));
}
dijkstra(dmin, n, 1);
for(int i = 2; i <= n; ++i)
cout << (dmin[i] == INFINITY?0:dmin[i]) << " ";
return 0;
}