Dane wejściowe->lista sąsiedztwa

Witam :slight_smile:

W programie mam podawane “połączenia krawędzi”. Jest to graf prosty. Tzn. dostaję takie coś na wejście:

2 3

1 4

Czyli- krawędź 2 jest połączona z trzecią.

I chcę sobie z tego zrobić listę sąsiedztwa żeby “potraktować to” DFS-em. Tylko jak?

W przypadku grafów mamy do czynienie z takim opisem tylko linia 2 3 oznacza że wierzchołek 2 jest połączony z wierzchołkiem 3, pewnie to miałeś na myśli. W grafie krawędzie się nie łączą same ze sobą!

No to tworzysz sobie tablicę wskaźników (po jednym dla wierzchołka) i każdy z tych wskaźników wskazuje na początek listy sąsiadów i-tego wierzchołka. To taki chyba najbardziej prosty sposób reprezentacji listy sąsiedztwa :smiley:

W najprostszym przypadku będzie to int*, gdy mowa o krawędziach bez wag.

Oczywiście miałem na myśli wierzchołki. Właśnie planuję to wykonać w taki sposób. Nie wiem tylko stworzyć tablicę zawierającą wskaźniki na pierwsze elementy list?

Nie prościej będzie zrobić tablicę wektorów (std::vector)?

no nie wiem, proponujcie :slight_smile:

Jest na to bardzo dużo sposobów np w C++:

vector > T(N);

vector > V(N);

list > L;

I każdy z nich da się przejść DFS’em i to nie są wszystkie możliwości.