Pagini recente » Cod sursa (job #2087210) | Cod sursa (job #2684422) | Cod sursa (job #574526) | Cod sursa (job #1361602) | Cod sursa (job #3197096)
#include <iostream>
#include <vector>
#include <climits>
#include<unordered_map>
#include <algorithm>
#include <set>
#include<string>
#include<map>
#include<queue>
#include<cmath>
#include<fstream>
#include<list>
#include<iomanip>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
vector<pair<int, int>>adj[50004];
int dist[50004];
void dij(int src) {
priority_queue<pair<int, int>>pq;
dist[src] = 0;
pq.push({ 0, src });
while (!pq.empty()) {
int u = pq.top().second;
pq.pop();
for (int i = 0; i < adj[u].size(); i++) {
int vecin = adj[u][i].first;
int cost = adj[u][i].second;
if (dist[vecin] > dist[u] + cost) {
dist[vecin] = dist[u] + cost;
pq.push({ -dist[vecin], vecin });
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m;
in >> n >> m;
for (int i = 1; i <= n; i++) {
dist[i] = INT_MAX;
}
while (m--) {
int a, b, c;
in >> a >> b >> c;
adj[a].push_back({ b, c });
}
dij(1);
for (int i = 2; i <= n; i++) {
if (dist[i] == INT_MAX)out << 0<<" ";
else out << dist[i]<<" ";
}
}