Pagini recente » Cod sursa (job #356951) | Cod sursa (job #1818031) | Cod sursa (job #884408) | Cod sursa (job #1890979) | Cod sursa (job #1808802)
#include <fstream>
using namespace std;
ifstream f("dijkstra.in");
ofstream g("dijkstra.out");
#define inf 1000000000
int n, m, p, a[10001][10001], viz[50001], d[50001], pred[50001];
int main()
{
bool gata;
int i, j, x, y, c, nr, dmin, im;
f>>n>>m; p = 1;
for(i = 1; i < n; i++)
for(j = i + 1; j <= n; j++)
a[i][j] = a[j][i] = inf;
while(f>>x>>y>>c)
a[x][y] = c;
for(i = 1; i <= n; i++) {
pred[i] = p;
d[i] = a[p][i];
}
viz[p] = 1;
nr = 1;
do {
gata = true;
dmin = inf;
for(i = 1; i <= n; i++)
if(!viz[i] && d[i] < dmin) {
dmin = d[i];
im = i;
}
if(dmin != inf) {
viz[im] = 1; gata = false; nr++;
for(i = 1; i <= n; i++)
if(!viz[i] && d[im] + a[im][i] < d[i]) {
d[i] = d[im] + a[im][i];
pred[i] = im;
}
}
}while(nr < n && !gata);
for(i = 2; i <= n; i++) {
if(d[i] == inf) d[i] = -1;
g<<d[i]<<' ';
}
return 0;
}