Pagini recente » Cod sursa (job #806743) | Cod sursa (job #2951834) | Cod sursa (job #2324261) | Cod sursa (job #955891) | Cod sursa (job #866977)
Cod sursa(job #866977)
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;
#define mm 50001
const int INF = 0x3f3f3f3f;
int Dmin[mm],viz[mm], N, M, x, y, cost, k;
queue<int> Q;
vector<pair<int, int> > lista[mm];
vector<pair<int, int> >::iterator it;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
int main() {
f>>N>>M;
for (int i = 1; i <= M; i++) {
f>>x>>y>>cost;
lista[x].push_back(pair<int, int>(y, cost));
}
memset(Dmin, INF, sizeof(Dmin));
memset(viz, false, sizeof(viz));
Dmin[1] = 0;
Q.push(1);
viz[1] = true;
while (Q.size() > 0) {
k = Q.front();
Q.pop();
viz[k] = false;
for (it = lista[k].begin(); it != lista[k].end(); it++)
if (Dmin[it->first] > Dmin[k] + it->second) {
Dmin[it->first] = Dmin[k] + it->second;
if (!viz[it->first]) {
Q.push(it->first);
viz[it->first] = true;
}
}
}
for (int i = 2; i <= N; i++)
g<<(Dmin[i] < INF ? Dmin[i] : 0)<<' ';
g<<'\n';
g.close();
return 0;
}