Pagini recente » Cod sursa (job #2319741) | Cod sursa (job #954192) | Cod sursa (job #1770074) | Cod sursa (job #488594) | Cod sursa (job #2408259)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
const int inf = 1<<30;
struct graf{
int nod,cost;
graf *next;
};
int n,m;
graf *s[50005];
int val[50005];
int fost[50005];
void add(int a,int b,int costul){
graf *q = new graf;
q->cost = costul;
q->nod = b;
q->next = s[a];
s[a] = q;
}
int main()
{
int i,a,b,c,minim,pmin,j;
fin>>n>>m;
for(i = 1; i <= m; i++){
fin>>a>>b>>c;
add(a,b,c);
}
for(i = 2; i <= n; i++){
val[i] = inf;
}
for(i = 1; i <= n; i++){
minim = inf;
for(j = 1; j <= n; j++){
if(val[j] < minim && fost[j] != 1){
minim = val[j];
pmin = j;
}
}
fost[pmin] = 1;
graf *t = s[pmin];
while(t){
if(val[t->nod] > val[pmin] + t->cost){
val[t->nod] = val[pmin] + t->cost;
}
t = t->next;
}
}
for(i = 2; i <= n; i++){
if(val[i] != inf)
fout<<val[i]<<" ";
else
fout<<"0"<<endl;
}
return 0;
}