Pagini recente » Cod sursa (job #37284) | Cod sursa (job #1737902) | Cod sursa (job #2505899) | Cod sursa (job #1222148) | Cod sursa (job #3286086)
#include <bits/stdc++.h>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
const int NMAX = 1e5;
const int INF = 1e9;
vector<pair<int, int>> G[NMAX + 1];
int d[NMAX + 1];
set<pair<int, int>> s;
int n, m;
void dijkstra(int src) {
for(int i = 1; i <= n; i++) {
d[i] = INF;
}
d[src] = 0;
s.insert({d[src], src});
while(!s.empty()) {
auto it = s.begin();
int node = (*it).second;
s.erase(it);
for(auto next : G[node]) {
int vecin = next.first;
int cost = next.second;
if(d[vecin] > d[node] + cost) {
d[vecin] = d[node] + cost;
s.insert({d[vecin], vecin});
}
}
}
}
int main() {
f >> n >> m;
for(int i = 1; i <= m; i++) {
int a, b, c;
f >> a >> b >> c;
G[a].push_back({b, c});
}
dijkstra(1);
for(int i = 2; i <= n; i++) {
if(d[i] == INF) {
g << 0 << ' ';
} else {
g << d[i] << ' ';
}
}
return 0;
}