Pagini recente » Cod sursa (job #1523604) | Cod sursa (job #340769) | Cod sursa (job #1544790) | Cod sursa (job #2866792) | Cod sursa (job #2283046)
#include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define N 50001
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
int b[N*5], c[N], l[N], r[N], n;
pair<int,int> a[N*5];
pair<int, int> h[N];
bool v[N];
void bfs(){
int i,j,k=1, nr=1,cur;
while(nr!=n){
i=h[0].s;
cur=-h[0].f;
pop_heap(h, h+k+1);
--k;
j=c[i];
while(j){
if(!v[a[j].f]){
v[a[j].f]=1;
r[a[j].f]=cur+a[j].s;
++nr;
h[++k].f=-r[a[j].f];
h[k].s=a[j].f;
push_heap(h, h+k+1);
}
j=b[j];
}
}
}
int main(){
int m,i,x,y,z,k=0;
in>>n>>m;
for(i=1; i<=m; ++i){
in>>x>>y>>z;
a[++k].f=y;
a[k].s=z;
b[k]=c[x];
c[x]=k;
}
h[0].s=1;
bfs();
for(i=2; i<=n; ++i)
out<<r[i]<<" ";
return 0;
}