Grafos
#include
#define INF 0x3f3f3f3f
void imp_grafo(int grafo[6][6])
{
int i,j;
printf("GRAFO DO SISTEMA\n\n"); for (i=0;i0) printf("%c -> ",vertices[i]); else //contador não foi maior que zero, ou seja, é o último nó a ser impresso... printf("%c\n",vertices[i]); //não aparece a seta. k--; //decrementa k para imprimir o próximo caminho contador--; //decrementa o contador que não deixará imprimir a seta para o último nó.
}
printf("\n"); printf("o MENOR custo entre '%c' e '%c' eh: %d\n\n\n\n",vertices[origem],vertices[destino],custo[destino]);
}
main()
{
int caminho= malloc(sizeof(caminho)); int menor,estima[6],posicao; int foi[6], custo[6],prec[6], origem=0,destino=1; char vertices[6]={'A','B','C','D','E ','F'};
do{
int grafo[6][6]={{0,7,9,0,0,14},{7,0,10,15,0,0},{9,10,0,11,0,2},{0,15,11,0,6,0},{0,0,0,6,0,9},{14,0,2,0,9,0}}; int cont_caminho=0; //zera o contador que indica o tamanho do vetor caminho
System("cls"); printf("conforme GRAFO, digite a origem e destino para calculo do caminho de menor custo\n"); printf("para SAIR - digite origem '0' e destino '0'\n"); dig_origem_destino(&origem,&destino); if(origem==destino)
{
printf(\"PROGRAMA FINALIZADO\\n\"); system(\"pause\"); break;
}
do{ inicializa(foi,custo,prec,estima); //inicializa as variáveis.
calc_peso(estima, &menor,&posicao,foi,origem,destino,custo,prec,grafo);
//calcula os custos
faz_caminho(caminho,destino,prec,&cont_caminho,origem,estima,custo); //armazena o caminho de menor custo
imprime_caminho(caminho,vertices,origem,destino,cont_caminho,custo); //imprime o caminho de menor custo
system("pause\");
}while(origem!=destino);