Pagini recente » Cod sursa (job #2683154) | Cod sursa (job #219007) | Cod sursa (job #319204) | Cod sursa (job #2062074) | Cod sursa (job #2373928)
#include <bits/stdc++.h>
#define LMAX 100005
using namespace std;
int n,dist[LMAX];
void Init(){
for(int i=1;i<=n;++i)
dist[i]=INT_MAX;
}
typedef pair<int,int> PII;
vector<pair<int,int> > G[LMAX];
void Dijkstra(int nod){
priority_queue<PII,vector<PII>,greater<PII> > Q;
dist[nod]=0;
Q.push({0,nod});
while(!Q.empty()){
int nod=Q.top().second,cost=Q.top().first;
Q.pop();
if(dist[nod]!=cost)
continue;
for(auto it : G[nod])
if(cost+it.second<dist[it.first]){
dist[it.first]=cost+it.second;
Q.push({dist[it.first],it.first});
}
}
}
int main(){
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int m;
scanf("%d %d",&n,&m);
for(int i=1;i<=m;++i){
int u,v,cost;
scanf("%d %d %d",&u,&v,&cost);
G[u].push_back({v,cost});
}
Init();
Dijkstra(1);
for(int i=2;i<=n;++i)
printf("%d ",dist[i]);
return 0;
}