Pagini recente » Cod sursa (job #777807) | Cod sursa (job #2460222) | Cod sursa (job #1575962) | Cod sursa (job #170578) | Cod sursa (job #2403135)
#include<bits/stdc++.h>
#define cin in
#define cout out
using namespace std;
typedef pair<int,int> iiPair;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
void dijkstra(int src, int n, vector<vector<iiPair>> graph){
vector<int> dist(n + 1,INT_MAX);
priority_queue<iiPair,vector<iiPair>,greater<iiPair>> pq;
pq.emplace(0,src);
dist[src] = 0;
while(!pq.empty()){
int u = pq.top().second;
pq.pop();
for(auto it : graph[u]){
int v = it.first;
int w = it.second;
if(dist[v] > dist[u] + w){
dist[v] = dist[u] + w;
pq.emplace(dist[v],v);
}
}
}
for(int i = 2; i <= n; ++i){
cout << dist[i] << ' ';
}
}
int main(){
int n, m, x, y, w;
cin >> n >> m;
vector<vector<iiPair>> graph(n + 1);
while(m--){
cin >> x >> y >> w;
graph[x].emplace_back(y,w);
}
dijkstra(1,n,graph);
}