Witam
Mam do napisanie program wykorzystujący algorytm Bellmana-Forda, niestety po umieszczeniu go na SPOJ-u twierdzi że jest "błędna odpowiedz". Po mojemu powinno być dobrze. Oto kod:
#include <stdio.h>
typedef struct {
int u, v, w;
} Edge;
int n;
int e;
Edge edges[1024];
int d[99];
#define INFINITY 10000
void printDist() {
int i;
for (i = 0; i < n; ++i)
printf("%d ", d[i]);
printf("\n\n");
}
void bellman_ford(int s) {
int i,j;
for (i = 0; i < n; ++i)
d[i] = INFINITY;
d[s] = 0;
for (i = 1; i < n; ++i) {
for (j = 0; j < e; ++j) {
if (d[edges[j].u] + edges[j].w < d[edges[j].v])
d[edges[j].v] = d[edges[j].u] + edges[j].w;
}
printDist();
}
}
int main(int argc, char *argv[]) {
int i, j;
int w, t, k;
scanf ("%d",&t);
for (k = 0; k < t; ++k) {
scanf("%d", &n);
e = 0;
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j) {
scanf("%d", &w);
if (w != 0) {
edges[e].u = i;
edges[e].v = j;
edges[e].w = w;
++e;
}
}
bellman_ford(0);
}
return 0;
}
Wie może ktoś gdzie może leżeć problem?