Hola Phicar
Disculpa que haya tardado tanto en contestar.
Hola PabloN...Pues yo diría que es es un grafo, no?
Si, el tipo ciudad es un grafo. Lo implementé usando listas de adyacencia.
Para el primer procedimiento, es decir
Camino* CentroEnvioMasCercano(Ciudad* d, int idZona, int n), la idea es hacer una búsqueda BFS partiendo del nodo idZona y de alguna manera ir guardando el recorrido que hago en alguna estructura auxiliar. Porque el problema está en que una vez que llego al nodo que tiene centro de envío (que tiene que ser el más cercano posible al de partida), tengo que ser capaz de reconstruir el camino que hice para retornarlo como solución. Mi idea fue generarme un vector con tantos nodos como tiene el grafo, donde en la celda i guardo el entero j si llego al nodo i desde el nodo j (la primera vez). Entonces a partir de este vector (donde guardo el "predecesor" inmediato), puedo reconstruir fácilmente el camino que hice para llegar al nodo con centro de envío. ¿Se te ocurre alguna idea mejor?
El segundo procedimiento es fácil pues sólo hay que hacer una recorrida BFS contando los niveles a partir del nodo semilla e ir guardando todos los nodos en la lista. El principal problema es cómo determinar cuando me excedo de distancia n (porque no basta sólo con un contador), pero creo que ya lo tengo solucionado.
El procedimiento que me genera problemas sigue siendo el tercero. No veo bien como encararlo. ¿Alguna idea?
Muchas gracias
