Pagini recente » Cod sursa (job #650553) | Cod sursa (job #1532690) | Cod sursa (job #2966056) | Cod sursa (job #272213) | Cod sursa (job #3345092)
#include<bits/stdc++.h>
using namespace std;
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});
g[v].push_back({u,w});
}
}
set<pair<int,int>> st;
dist[1]=0;
st.insert({0,1});
while(!st.empty()){
auto [d,u]=*st.begin();
st.erase(st.begin());
if(d>dist[u]) continue;
for(auto [v,w]:g[u]){
if(dist[v]>d+w){
st.erase({dist[v],v});
dist[v]=d+w;
st.insert({dist[v],v});
}
}
}
for(int i=2;i<=n;i++){
if(dist[i]==INF) cout<<"INF ";
else cout<<dist[i]<<" ";
}
}