Pagini recente » Cod sursa (job #2664638) | Cod sursa (job #2112952) | Cod sursa (job #1525917) | Cod sursa (job #2049804) | Cod sursa (job #1843964)
#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;
heap.push(make_pair(0,1));
for(i=1;i<=n;i++)
dist[i]=999999999;
dist[nod]=0;
while(!heap.empty()){
from=heap.top().second;
d=heap.top().first;
heap.pop();
for(i=0;i<v[from].size();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++)
printf("%d ",dist[i]);
return 0;
}