Pagini recente » Cod sursa (job #2674043) | Cod sursa (job #1176934) | Cod sursa (job #402023) | Cod sursa (job #1447040) | Cod sursa (job #2734914)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
int const N = 50001;
vector<pair<int, int>> graf[N];
vector<int> length(N, 1e9 + 1), visited(N);
queue<int> q;
int BFS() {
while(!q.empty()) {
int node = q.front();
q.pop();
for (int i = 0; i < graf[node].size(); ++i) {
int x = graf[node][i].first;
if (visited[x] == 0) {
q.push(x);
visited[i] = 1;
}
length[x] = min(length[node] + graf[node][i].second, length[x]);
}
}
}
int main() {
int n, m; fin >> n >> m;
for (int i = 1; i <= m; ++i) {
int src, dest, dist;
fin >> src >> dest >> dist;
graf[src].push_back(make_pair(dest, dist));
}
length[1] = 0;
visited[1] = 1;
q.push(1);
BFS();
for (int i = 2; i <= n; ++i) {
if (length[i] == 1e9 + 1) {
fout << 0 << ' ';
} else {
fout << length[i] << ' ';
}
}
return 0;
}