Pagini recente » Cod sursa (job #3001976) | Cod sursa (job #2490822) | icrisop1 | Cod sursa (job #1006308) | Cod sursa (job #662705)
Cod sursa(job #662705)
#include <fstream>
#define MARE 100000000
using namespace std;
ifstream fi("dijkstra.in");
ofstream fo("dijkstra.out");
int a[1501][1501], sel[1501], d[1501], i, m, n, l, c, nc;
void dijkstra (int s) {
int min,jmin,dn,j;
for (i = 2 ; i <= n; i++)
d[i] = a[s][i];
sel[s] = 1;
d[s] = 0;
for (i = 2; i <= n; i++) {
min = MARE;
for (j = 2;j <= n;j++)
if (sel[j] == 0)
if (d[j] < min) {
min = d[j];
jmin = j;
}
sel[jmin] = 1;
for (j = 2;j <= n;j++)
if (sel[j] == 0) {
dn = d[jmin] + a[jmin][j];
if (dn < d[j])
d[j] = dn;
}
}
}
int main () {
fi >> n >> m;
for (l = 1; l <= n; l++)
for (c = 1; c <= n; c++)
a[l][c] = MARE;
for (i = 1; i <= m; i++) {
fi >> l >> c; fi >> a[l][c];
}
dijkstra(1);
for (i = 2; i <= n; i++) {
if(d[i]==MARE)
fo<<"0"<<' ';
else
fo << d[i] << ' ';
}
}