to tentando fazer um programa ke calcula o custo e exibe da rota mais barata, essa função bf é o algoritimo de bellman ford e ele retorna um vetor com o caminho mais barato de cada nó...
eu ainda fiz a parte que soma a rota mais barata mas mesmo assim n ta funcionando, se algué puder me ajudar eu agradeço!!!
Pergunta
Thiago10gr
e ai beleza galera?!
to tentando fazer um programa ke calcula o custo e exibe da rota mais barata, essa função bf é o algoritimo de bellman ford e ele retorna um vetor com o caminho mais barato de cada nó...
eu ainda fiz a parte que soma a rota mais barata mas mesmo assim n ta funcionando, se algué puder me ajudar eu agradeço!!!
#include <stdio.h> #include <stdlib.h> struct telemento{ int valor; struct telemento *prox; }; typedef int tgrafo[10][10]; int *bf(tgrafo *g, int v){ int k,j,i; int dist[10], pred[10], *resposta for(i=0;i<10;i++){ dist[i]= 99; pred[i] = -1; } dist[v]=0; for(k=1;k<10;k++){ for(i=0;i<10;i++){ for(j=0;j<10;j++){ if((*g)[i][j] && dist[j] > dist[i] + (*g)[i][j]){ dist[j] = dist[i] + (*g)[i][j]; pred[j]=i; } } } } for(i=0;i<10;i++){ for(j=0;j<10;j++){ if((*g)[i][j] && dist[j] > dist[i] + (*g)[i][j]){ return NULL; } } } resposta= ((int*)MALLOC(10*sizeof(int)); for(i=0;i<10;i++) resp[i] = pre[i]; return resposta } int main(){ int orig, dest, vet[10], aux1, aux2, i; float soma; tgrafo g1 = {{0,600,550,600,700,0,500,550,0,0}, {600,0,700,450,500,600,0,0,0,700}, {550,700,0,450,650,700,550,0,650,0}, {600,450,450,0,0,550,0,550,700,600}, {700,500,650,0,0,0,0,600,0,700}, {0,600,700,550,0,0,700,0,500,0}, {500,0,550,0,0,700,0,800,0,0}, {550,0,0,550,600,0,800,0,0,650}, {0,0,650,700,0,500,0,0,0,800}, {0,700,0,600,700,0,0,650,800,0}}; printf("Informe a origem:\n "); scanf("%d",&orig); printf("Informe o destino:\n "); scanf("%d",&dest); vet[i] = (*bf(&g1, orig)); soma=0; while(vet[i]!= -1){ for(i=orig;i<=10;i--){ if(dest == i){ aux1 = vet[i]; aux2 = i; soma = (soma + g1[aux1][aux2]); dest = vet[i]; } } } printf("\nCusto da viagem mais barata: %4.2f", soma); system("PAUSE"); return 0; }Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.