Pagini recente » Cod sursa (job #2560332) | Cod sursa (job #2132006) | Cod sursa (job #2683137) | Cod sursa (job #3163256) | Cod sursa (job #2036380)
#include <fstream>
#include <vector>
#define DEF 50001
#define INF 2147483646
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m, d[DEF], v[DEF];
vector < pair <int, int> > L[DEF];
int main () {
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y, z;
fin >> x >> y >> z;
L[x].push_back (make_pair (y, z));
}
for (int i = 2; i <= n; i++) {
d[i] = INF;
}
for (int i = 1; i <= n; i++) {
int Min = INF + 1, nod;
for (int j = 1; j <= n; j++) {
if (d[j] < Min && v[j] == 0) {
Min = d[j];
nod = j;
}
}
v[nod] = 1;
for (vector < pair <int, int> >::iterator it = L[nod].begin (); it != L[nod].end (); it++) {
int vecin = it -> first,
cost = it -> second;
if (v[vecin] == 0 && d[vecin] > d[nod] + cost) {
d[vecin] = d[nod] + cost;
}
}
}
for (int i = 2; i <= n; i++) {
if (d[i] == INF)
fout << "0 ";
else
fout << d[i] << " ";
}
return 0;
}