Pagini recente » Cod sursa (job #1170654) | Cod sursa (job #1908372) | Cod sursa (job #779077) | Cod sursa (job #217503) | Cod sursa (job #2392328)
#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;
int n,m,dist[50001];
vector <edge>g[NMAX];
priority_queue <edge>pq;
void dijkstra(int p){
aux.dest=p;
aux.cost=0;
pq.push(aux);
while(!pq.empty()){
int node=pq.top().dest;
int cost=pq.top().cost;
pq.pop();
if(dist[node]==-1){
dist[node]=cost;
for(auto y:g[node]){
if(dist[y.dest]==-1){
aux.dest=y.dest;
aux.cost=dist[node]+y.cost;
pq.push(aux);
}
}
}
}
}
int main()
{
in>>n>>m;
int x,y,c;
for(int i=1;i<=m;i++){
int x,y,c;
in>>x>>y>>c;
aux.cost=c;
aux.dest=y;
g[x].push_back(aux);
}
memset(dist,-1,sizeof(dist));
dijkstra();
for(int i=2;i<=n;i++){
if(dist[i]!=-1)
out<<dist[i]<<" ";
else
out<<0<<" ";
}
return 0;
}