Red de conocimiento informático - Conocimiento sistemático - Espero escribir los algoritmos de ruta más corta de entrada y salida en el algoritmo de Dijestra en lenguaje C, ¡gracias!

Espero escribir los algoritmos de ruta más corta de entrada y salida en el algoritmo de Dijestra en lenguaje C, ¡gracias!

¿Los gráficos de entrada y salida están descritos por matrices de adyacencia? Si es así, COPIARÉ mi código para usted:

#include lt;stdio.hgt;

#include lt;stdlib. ;

#define INFINITY 9999

#define MAX_VERTEX_NUM 20

estructura typedef{

int vexs[MAX_VERTEX_NUM];

int arcos[20][20];

int vexnum, arcnum;

}MGraph;

void ShortestPath_DIJ(MGraph G, int v0, int D[ ] ){

int *final, min, i, v, w, vex, path[20], j, path2[20]

printf("Ingrese el vértice a ser; alcanzar el vértice: ");

scanf("d", amp; vex);

final=(int *)malloc(sizeof(int)*G.arcs[v0 ] [w]lt;INFINITY)

ruta[w]= v0;

else ruta[w]=-1;

}

D[v0]=0; final[v0]=1; ruta[v0]=-1;

j=1; G.vxnum; i){

min= INFINITO;

for(w=0;wlt;G.vexnum; w)

if(! final [w]){

if(D[w]lt; min){

v=w

min=D[w];

p>

}

}

final[v]=1

for(w = 0; wlt; G.vexnum; w)

if(!vexnum; w)

if(!final[w]amp;amp;(min G.arcs[ v ] [w]lt; D[w])){

D[w]=min G.arcs[ v][w]lt; D[w]))arcs[ v][w] ;

path[w]=v;

}

}

printf("La distancia más corta entre dos vértices es d\ n \n", D[vex]);

printf("El camino más corto entre dos vértices es: ");

for(w=0; wlt.G.vexnum ; w )

ruta2[w]=-1;

i=1; ruta2[0]=w=vex; w]! =-1){

ruta2[i ]=ruta[w]

w=ruta[w]

}

para

r(w=G.vexnum-1;wlt.vexnum-1;wgt;=0;w--){

if(ruta[vex]==-1){

printf("No existe una ruta factible entre d y d", v0, vex

break

}

if(path2[w]); ! =-1)

printf("d ", ruta2[w]

}

printf("\n");

printf("\n");

}

int main(){

int D[20], i, j, v0 ;

MGraph G;

for(i=0;ilt;20;i)

G.arcs[0][4] =30;

G.arcos[0][5]=100;G.arcos[1][2]=5;

G.arcos[2][3] =50; G.arcs[3][5]=10;

G.arcs[4][3]=20;

for(i=0;ilt;G.arcs[i][j]);

printf("\n");

}

while(1){

printf("Ingrese el vértice de salida: ");

scanf(" d", amp; v0); (G, v0, D);

}

sistema("pausa");