I have a task for my college, Dijkstra and Bellman Ford have already been successfully implemented, but I have problems with this. Everything looks good, but it does not give me the correct answer.
Here is the code:
void FloydWarshall()
{
int path[500][500];
for(int i = 0 ; i <= nvertices ; i++)
for(int j = 0 ; j <= nvertices ; j++)
path[i][j] = INFINITY;
for(int j = 0 ; j < narestas ; j++)
{
path[arestas[j]->v1][arestas[j]->v2] = arestas[j]->peso;
path[arestas[j]->v2][arestas[j]->v1] = arestas[j]->peso;
}
for(int i = 0 ; i <= nvertices ; i++)
path[i][i] = 0;
for(int k = 1 ; k <= nvertices ; k++)
for(int i = 1 ; i <= nvertices ; i++)
for(int j = 1 ; j <= nvertices ; j++)
if(path[i][j] > path[i][k] + path[k][j])
path[i][j] = path[i][k] + path[k][j];
printf("\n\n\nResultado FloydWarshall:\n");
for(int i = 1 ; i <= nvertices ; i++)
printf("distancia ao vertice %d: %d\n", i, path[1][i]);
}
I use this graph example that I made:
6 7
1 2 4
1 5 1
2 3 1
2 5 2
5 6 3
6 4 6
3 4 2
means that we have 6 vertices (from 1 to 6) and 7 edges (1,2) with a weight of 4 ... etc.
If someone needs more information, I have to give it, I'm just tired of looking at this code and not finding an error.
source
share