Cod sursa(job #301418)
#include <cstdio>
#define DIM 100
const int INF = 1<<30;
int a[DIM][DIM], n, m, d[DIM], v[DIM];
int main()
{
FILE *f = fopen("dijkstra.in", "r");
fscanf(f, "%d%d", &n, &m);
int i, x, y, j;
for (i = 1; i <= n; d[i] = INF, i++)
for (j = 1; j <= n; j++)
a[i][j] = INF;
for (i = 1; i <= m; i++)
{
fscanf(f, "%d%d", &x, &y);
fscanf(f, "%d", &a[x][y]);
a[y][x] = a[x][y];
}
fclose(f);
/* for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
if (a[i][j] != INF)
printf("%3d", a[i][j]);
else
printf(" X");
printf("\n");
}
*/
d[1] = 0, v[1] = 0;
for (i = 1; i <= n; i++)
{
for (j = i + 1; j <= n; j++)
if (!v[i] && a[i][j] != INF)
if (d[i] + a[i][j] < d[j])
d[j] = d[i] + a[i][j];
v[j] = 1;
}
f = fopen("dijkstra.out", "w");
for (i = 2; i <= n; i++)
fprintf(f, "%d ", (d[i] == INF)? 0 : d[i]);
return 0;
}