Espero escribir los algoritmos de ruta más corta de entrada y salida en el algoritmo de Dijestra en lenguaje C, ¡gracias!
#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]
} p; >
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");