Pagini recente » Cod sursa (job #2097641) | Cod sursa (job #1419980) | Cod sursa (job #2964945) | Cod sursa (job #3219265) | Cod sursa (job #2487739)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
bool vis[NMAX];
int dist[NMAX];
int n, m;
void djk (int x, vector<vector<pair<int, int>>>& g){
for (int i = 1; i <= n; ++i)
{
dist[i] = 1e9;
}
priority_queue<pair<int,int>>pq;
pq.push({0,x});
dist[x] = 0;
while(!pq.empty()){
int s = pq.top().second;
pq.pop();
if (vis[s]) continue;
vis[s] = 1;
for (auto e: g[s]) {
int a = e.first, w = e.second;
dist[a] = min(dist[a], dist[s] + w);
pq.push({-dist[a], a});
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
vector<vector<pair<int,int>>>g(n+1);
for (int i = 1; i <= m; ++i)
{
int a, b, w;
cin >> a >> b >> w;
g[a].push_back({b, w});
}
djk(1, g);
for (int i = 2; i <= n; ++i)
cout << dist[i] << ' ';
cout << '\n';
}