Pagini recente » Cod sursa (job #1460484) | Cod sursa (job #376725) | Cod sursa (job #1959874) | Cod sursa (job #186850) | Cod sursa (job #2330931)
#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int> >G[50005];
int dist[50005];
void Dijkstra(int k){
set<pair<int,int> > Q;
Q.insert({0,k});
dist[k]=0;
while(!Q.empty()){
int nod=Q.begin()->second;
Q.erase(Q.begin());
for(auto it : G[nod])
if(dist[nod]+it.second<dist[it.first]){
Q.erase({dist[it.first],it.first});
dist[it.first]=dist[nod]+it.second;
Q.insert({dist[it.first],it.first});
}
}
}
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i){
int st,dr,cost;
scanf("%d %d %d",&st,&dr,&cost);
G[st].push_back({dr,cost});
}
for(int i=1;i<=n;++i)
dist[i]=INT_MAX;
Dijkstra(1);
for(int i=2;i<=n;++i){
if(dist[i]==INT_MAX)
dist[i]=0;
printf("%d ",dist[i]);
}
}