Pagini recente » Cod sursa (job #2397273) | Cod sursa (job #2900689) | Cod sursa (job #2935034) | Cod sursa (job #1951969) | Cod sursa (job #2432737)
#include <bits/stdc++.h>
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
#define NMAX 50001
struct edge{
int dest,cost;
bool operator <(const edge&aux)const{
return cost>aux.cost;
}
}aux;
vector<edge>g[NMAX];
priority_queue<edge>pq;
int n,m,dist[NMAX];
void dijkstra(){
aux.cost=0;
aux.dest=1;
pq.push(aux);
while(!pq.empty()){
int cost=pq.top().cost;
int node=pq.top().dest;
pq.pop();
if(dist[node]==-1){
dist[node]=cost;
for(auto y:g[node]){
aux.cost=cost+y.cost;
aux.dest=y.dest;
pq.push(aux);
}
}
}
}
int main()
{
memset(dist,-1,sizeof(dist));
int n,m;
in>>n>>m;
int x,y,cost;
for(int i=1;i<=m;i++){
in>>x>>y>>cost;
aux.dest=y;
aux.cost=cost;
g[x].push_back(aux);
}
dijkstra();
for(int i=2;i<=n;i++){
if(dist[i]==-1)
out<<0<<" ";
else
out<<dist[i]<<" ";
}
return 0;
}