Mai intai trebuie sa te autentifici.
Cod sursa(job #1551737)
Utilizator | Data | 16 decembrie 2015 15:15:04 | |
---|---|---|---|
Problema | Algoritmul lui Dijkstra | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.83 kb |
#include<fstream>
using namespace std;
const int prcMax = 23005;
typedef int matrice[prcMax][prcMax];
matrice Dist;
int n, m;
void init() {
ifstream fin("dijkstra.in");
int x, y, L;
fin >> n >> m;
for (int i=1; i<=m; ++i) {
fin >> x >> y >> L;
Dist[x][y] = Dist[y][x] = L;
}
fin.close();
}
void dijkstra() {
for (int nod=2; nod<=n; ++nod)
for (int i=2; i<=n; ++i)
if (i != nod && Dist[nod][i] > 0)
if (Dist[1][i] > Dist[1][nod] + Dist[nod][i] || !Dist[1][i])
Dist[1][i] = Dist[1][nod] + Dist[nod][i];
}
void finish() {
ofstream fout("dijkstra.out");
for (int i=2; i<=n; ++i)
fout << Dist[1][i] << " ";
fout.close();
}
int main() {
init();
dijkstra();
finish();
return 0;
}