Básicamente es una búsqueda/buscador de caminos.
Supongamos que isConnected (a, b) devuelve si los dos nodos están conectados
(estoy escribiendo el código en Lua, no debería ser difícil de traducir)
function search(list)
local i = 0
while i < 10000 do
i = i + 1
if isConnected(i,list[#list]) then
--This expression refers to the last member
search(list ++ i)
--Although not technically a proper operator, ++ adds the element to the end of the list
end
end
submit_list(list)
end
submit_list
es una función que toma listas y las verifica. Encuentra la lista enviada más larga que no contiene duplicados. Esa lista será la solución a su problema.
Oh, una cosa más; mi código no explica nada. En el caso de que la lista contenga nodos duplicados, esa función debe terminar para que no se repita para siempre.