Pagini recente » Cod sursa (job #2838025) | Cod sursa (job #2441873) | Cod sursa (job #820261) | Cod sursa (job #668249) | Cod sursa (job #721601)
Cod sursa(job #721601)
#include <cstdio>
#include <vector>
#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;
vector< pair<int,int> > li[NMax];
void dijkstra() {
q.push(1);
while(!q.empty()) {
now=q.front();
for(long it=0; it<li[now].size();it++) {
if(lg[now] + li[now][it].val < lg[li[now][it].nod] || lg[li[now][it].nod]==0) {
lg[li[now][it].nod]=lg[now] + li[now][it].val;
q.push(li[now][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;
}