Pagini recente » Cod sursa (job #1685839) | Cod sursa (job #3041237) | Cod sursa (job #2035693) | Cod sursa (job #2671898) | Cod sursa (job #1870968)
#include<fstream>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
struct graf{
int nod, cost;
graf *next;
};
const int inf = 1 << 30;
int n, m, d[50005], q[50005];
graf *a[50005];
void add(int x, int y, int z){
graf *q = new graf;
q->nod = y; q->cost = z;
q->next=a[x]; a[x]=q;
}
void dijkstra(){
for(int i=2; i<=n; ++i) d[i]=inf;
int min, pmin=0;
for(int i=1; i<=n; ++i){
min = inf;
for(int j=1; j<=n; ++j){
if(d[j]<min && !q[j]){
min= d[j]; pmin=j;
}
}
q[pmin]=1;
graf *t = a[pmin];
while(t){
if(d[t->nod] > d[pmin] + t->cost ){
d[t->nod] = d[pmin] + t->cost;
}
t = t->next;
}
}
}
int main(){
cin>>n>>m;
while(m--){
int x, y, z;
cin>>x>>y>>z;
add(x,y,z);
}
dijkstra();
for(int i=2; i<=n; ++i){
if(d[i]==inf) cout<<0<<" ";
else cout<<d[i]<<" ";
}
return 0;
}