Pagini recente » Cod sursa (job #2924299) | Cod sursa (job #2659846) | Cod sursa (job #1366388) | Cod sursa (job #2548616) | Cod sursa (job #2282799)
#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];
pair<int,int> a[N*5];
int q[N*75];
bool v[N];
void bfs(){
int u=0, p=0,i,j;
q[u]=1;
while(p<=u){
i=q[p++];
j=c[i];
//cout<<i<<":\n";
while(j){
//cout<<a[j].f<<" "<<a[j].s<<": "<<r[a[j].f];
if(!v[a[j].f] || (v[a[j].f] && r[a[j].f]>r[i]+a[j].s)){
v[a[j].f]=1;
r[a[j].f]=r[i]+a[j].s;
//cout<<r[a[j].f]<<"\n";
q[++u]=a[j].f;
}
j=b[j];
}
//cout<<"\n\n";
}
}
int main(){
int n,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;
}
bfs();
for(i=2; i<=n; ++i)
out<<r[i]<<" ";
return 0;
}