Pagini recente » Cod sursa (job #2267255) | Cod sursa (job #514631) | Cod sursa (job #270846) | Cod sursa (job #505053) | Cod sursa (job #1843979)
#include<stdio.h>
#include<queue>
#include<utility>
#include<vector>
using namespace std;
priority_queue< pair<int, int>, vector<pair<int, int> >, greater < pair <int, int > > > heap;
int dist[50001];
vector<pair<int,int> >v[250001];
int n;
void dijkstra ( int nod ){
int d,to,i,from,edge,pp;
heap.push(make_pair(0,1));
for(i=1;i<=n;i++)
dist[i]=999999999;
dist[nod]=0;
while(!heap.empty()){
pp=1;
from=heap.top().second;
d=heap.top().first;
heap.pop();
if(dist[from]!=d){
//continue;
pp=0;
}
for(i=0;i<v[from].size()&&pp==1;i++){
to=v[from][i].second;
edge=v[from][i].first;
if(dist[to]>d+edge){
dist[to]=d+edge;
heap.push(make_pair(d+edge,to));
}
}
}
}
int main(){
int i,a,b,c,m;
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++){
scanf("%d%d%d",&a,&b,&c);
v[a].push_back(make_pair(c,b));
}
dijkstra(1);
for(i=2;i<=n;i++){
if(dist[i]==999999999)
printf("0 ");
printf("%d ",dist[i]);
}
return 0;
}