Witam wszystkich!
Po dwóch nie-tak-bardzo różnych próbach udało mi się wykonać zadanie z niezbyt dumnym wynikiem 3.5 punkta. Chciałbym podnieść ten wynik, jednak nie jestem pewien jak miałbym to zrobić. Kod(cpp): https://ideone.com/Po9qc1
Program zamienia adres IP na uint_fast32_t, i używa go jako klucza do std::unordered_map, a wartością jest std::vector zawierający wszystkie połączenia do tego adresu. Przy dodawaniu adresów mapa robi większość roboty za mnie, przy sprawdzaniu czy istnieje połączenie używam prostego algorytmu który sprawdza wszystkie połączone adresy aż nie znajdzie adresu docelowego lub nie skończą się połączenia. Żeby uniknąć zapętlania między dwoma adresami sprawdzam, czy już go odwiedzałem, jeśli tak to jest on pomijany przy dalszym szukaniu.
Wydaje mi się, że aby uzyskać lepszy wynik muszę w jakiś sposób wykorzystać wyniki z poprzednich przeszukiwań (na co poza pomysłem nie mam pojęcia jak nawet zacząć implementować), albo znaleźć bardziej wydajny algorytm na przeszukiwanie sieci.
Jeśli ktoś jest w stanie podesłać jakieś źródło(może być również po angielsku!) albo podpowiedzieć jakie zagadnienie googlować, jak coś zaimplementować lepiej itp. będę wniebowzięty.