1.- Modela el mapa como un grafo no dirigido con pesos en sus edges.
2.- Para cada isla tienes que correr el
algoritmo de ruta mas corta de dijkstra.
3.- El paso 2 te dira si hay islas que no son alcanzables por puentes.
4.- El paso 2 también te dirá la ruta de ciudad a ciudad.
Nota: Si la velocidad no es un factor tan importante (grafo con menos de 100 nodos) puedes usar el algoritmo de
floyd-warshall para obtener todas las rutas mas cortas de una manera mucho mas fácil de implementar.
Para la interfaz puedes usar alguna librería para crear GUIs.