Pagini recente » Cod sursa (job #2899751) | Borderou de evaluare (job #756634) | Diferente pentru problema/teste intre reviziile 34 si 33 | Cod sursa (job #3344441) | Cod sursa (job #3345101)
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int inf = 1e9;
int main(){
int n,m;
cin>>n>>m;
vector<vector<pair<int,int>>> g(n+1);
vector<int> dist(n+1,inf);
for(int i=0;i<m;i++){
int u,v,w;
cin>>u>>v>>w;
if(u<=n && v<=n){
g[u].push_back({v,w});
}
}
priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq;
dist[1]=0;
pq.push({0, 1});
while(!pq.empty()){
auto [d, u]=pq.top();
pq.pop();
if(d>dist[u]) continue;
for(auto [v, w]:g[u]){
if(dist[v]>d+w){
dist[v]=d+w;
pq.push({dist[v], v});
}
}
}
for(int i=2; i<=n; i++){
if(dist[i]==inf) cout<<"INF ";
else cout<<dist[i]<<" ";
}
return 0;
}