Pagini recente » Cod sursa (job #2664442) | Cod sursa (job #1759789) | Cod sursa (job #2826970) | Cod sursa (job #2329138) | Cod sursa (job #752254)
Cod sursa(job #752254)
#include <fstream>
#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);
ifstream f ("dijkstra.in");
ofstream g ("dijkstra.out");
f >> n >> m;
memset(best, 0x3f, sizeof(best));
best[1] = 0;
for(i = 1; i <= m; ++i) {
f >> 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)
if(best[i] == 0x3f3f3f3f)
g << "0 ";
else
g << best[i] << ' ';
return 0;
}