Home Algoritmos y Estructuras de Datos (VJ1215)

Curso 2022/2023

Solución del ejercicio 21.a del tema 6

bool GrafoDirigido::esAlcanzableDFS(int v,
				    int destino,
				    vector<bool> & visitado) const {
   
   if (v == destino)
      return true;

   visitado[v] = true;

   for (Arco * arco = vertices[v].primerArcoDeSalida; arco != nullptr; arco = arco->siguiente)
      if (! visitado[arco->vecino])
	 if (esAlcanzableDFS(arco->vecino, destino, visitado))
	    return true;

   return false;

}

bool GrafoDirigido::esAlcanzable(int origen, int destino) const {

   vector<bool> visitado(vertices.size(), false);
 
   return esAlcanzableDFS(origen, destino, visitado);

}