Pagini recente » Cod sursa (job #2436540) | Cod sursa (job #221419) | Cod sursa (job #1333502) | Cod sursa (job #1294747) | Cod sursa (job #752247)
Cod sursa(job #752247)
#include <cstdio>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
const int maxn = 50005;
struct muchie {
int nod;
int cost;
};
vector <muchie> vecini[maxn];
queue <int> coada;
int n, m, x, y, z, best[maxn], nc;
bool pus[maxn];
int main()
{
int i;
freopen ("dijkstra.in", "r", stdin);
freopen ("dijkstra.out", "w", stdout);
scanf("%d %d", &n, &m);
memset(best, 0x3f, sizeof(best));
best[1] = 0;
for(i = 1; i <= m; ++i) {
scanf("%d %d %d", &x, &y, &z);
vecini[x].push_back(muchie {y, z});
//vecini[y].push_back(muchie {x, z});
}
coada.push(1);
pus[1] = 1;
while(!coada.empty()) {
nc = coada.front();
coada.pop();
pus[nc] = 0;
for(i = 0; i < vecini[nc].size(); ++i) {
if(best[vecini[nc][i].nod] > best[nc] + vecini[nc][i].cost) {
if(!pus[vecini[nc][i].nod]) {
coada.push(vecini[nc][i].nod);
pus[vecini[nc][i].nod] = 1;
}
best[vecini[nc][i].nod] = best[nc] + vecini[nc][i].cost;
}
}
}
for(i = 2; i <= n; ++i)
printf("%d ", best[i]);
return 0;
}