Pagini recente » Cod sursa (job #1975324) | Cod sursa (job #2566243) | Cod sursa (job #807073) | Cod sursa (job #2461183) | Cod sursa (job #721459)
Cod sursa(job #721459)
#include <cstdio>
#include <list>
#include <queue>
#define nod first
#define val second
#define NMax 50001
using namespace std;
int n,m,lg[NMax],vall,x,y,now;
queue<int> q;
list<pair<int,int>> li[NMax];
void dijkstra() {
q.push(1);
while(!q.empty()) {
now=q.front();
for(list<pair<int,int>>::iterator it=li[now].begin();it!=li[now].end();it++) {
if(lg[now] + it->val < lg[it->nod] || lg[it->nod]==0) {
lg[it->nod]=lg[now] + it->val;
q.push(it->nod);
}
}
q.pop();
}
}
int main() {
freopen("dijkstra.in","rt",stdin);
freopen("dijkstra.out","wt",stdout);
scanf("%ld %ld",&n,&m);
for(int i=1;i<=m;i++) {
scanf("%ld %ld %ld",&x,&y,&vall);
li[x].push_back(make_pair(y,vall));
}
dijkstra();
for(int i=2;i<=n;i++)
printf("%ld ",lg[i]);
printf("\n");
return 0;
}