Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef int casilla;
- typedef struct {
- int casillas[N][N]; // Laberinto NxN casillas
- casilla entrada, salida;
- FILE *pared;
- } Laberinto;
- /*
- La casilla (0,0) del laberinto sera la casilla 0, la (0,1) la casilla,
- esto es importante para entrada, salida y la lista de paredes.
- Por ejemplo la lista de paredes será de la forma 0,1, significando que
- hay una pared entre casillas[0][0] y casillas[0][1].
- */
- Laberinto CrearLaberinto (FILE *paredes, casilla entrada, casilla salida)
- {
- int i, j;
- Laberinto L;
- //Inicializamos a 1
- for (i=0;i<N;i++)
- for (j=0;j<N;j++)
- L.casillas[i][j] = 1;
- L.pared = paredes;
- l.entrada = entrada;
- l.salida = salida;
- return L;
- }
- //Devuelve el grafo asociado a un laberinto
- static Grafo GrafoLaberinto (Laberinto L)
- {
- Grafo G;
- int tam, i, j;
- tam = N*N*N*N;
- G = (Grafo) malloc (sizeof(tGrafo));
- G->numVert = tam;
- G->Costes = (tCoste *) malloc (sizeof(tCoste)*tam);
- for (i=0; i<N*N;i++)
- for (j=0; j<N*N; j++)
- G->Costes[i][j] = INF;
- while (L->fscanf(pared, "%d,%d", &i, &j)!=EOF)
- {
- G->Costes[i][j] = INF;
- G->Costes[j][i] = INF;
- }
- return G;
- }
- //Devuelve la solución del laberinto
- vertice **ResolverLaberinto (Laberinto L)
- {
- Grafo Aux;
- tCoste **D;
- vertice **P;
- Aux = GrafoLaberinto(L);
- Dijkstra (L->entrada, L->salida, D, P);
- DestruirGrafo(Aux);
- return P;
- }
Add Comment
Please, Sign In to add comment