Pagini recente » Cod sursa (job #638004) | Cod sursa (job #2865507) | Cod sursa (job #2582430) | Cod sursa (job #2679813) | Cod sursa (job #2749009)
#include <fstream>
#include <vector>
int N;
std::vector<std::pair<int, int>> G[50001];
#define INFINITY 2147483647
int d[10];
int v[10];
void dijkstra(int s) {
int i;
for (i = 1; i <= N; ++i)
d[i] = INFINITY;
for (auto& nod : G[s])
d[nod.first] = nod.second;
d[s] = 0;
v[s] = 1;
int min;
d[0] = INFINITY;
for (int k = 1; k <= N; ++k) {
min = 0;
for (i = 1; i <= N; ++i) {
if (v[i] == 0 && d[i] < d[min])
min = i;
}
if (min != 0) {
v[min] = 1;
for (auto& nod : G[min]) {
if (v[nod.first] == 0 && d[nod.first] > d[min] + nod.second)
d[nod.first] = d[min] + nod.second;
}
}
}
}
int main() {
std::ifstream fin("dijkstra.in");
std::ofstream fout("dijkstra.out");
int M;
fin >> N >> M;
int A, B, C;
for (int i = 1; i <= M; ++i) {
fin >> A >> B >> C;
G[A].push_back({ B, C });
}
fin.close();
dijkstra(1);
for (int i = 2; i <= N; ++i)
fout << d[i] << ' ';
fout << '\n';
fout.close();
return 0;
}