Cześć, mam za zadanie przekonwertować tablicę sąsiedztwa grafu (nieskierowanego) na graf. Dotychczas udało mi się uzyskać taki kod:
//Tworzenie opisu drzewa
// ileWierzcholkow - ile wierzcholkow ma graf?
// macierzSasiedztwa[m][n] - macierz sasiedztwa podana przez uzytkownika
std::list<int> listaA;
std::list<int> listaB;
//iterowanie po wierzcholkach
for (j = 1; j <= ileWierzcholkow; j++)
{
//nadaj indeks kazdemu wierzcholkowi
wierzcholek[j].indeks = j;
//iteruj po wierszach macierzy sasiedztwa
for (int k = 0; k < ileWierzcholkow; k++)
{
//iteruj po kolumnach macierzy sasiedztwa
for (int l = 0; l < ileWierzcholkow; l++)
{
//czy wierzcholek A jest poloczony z B?
if (1 == macierzSasiedztwa[k][l])
{
//wpisz ktore wierzcholki sa polaczone z wierzcholkiem A
listaA.push_back(j);
}
//czy wierzcholek B jest poloczony z A?
if (1 == macierzSasiedztwa[l][k])
{
//wpisz ktore wierzcholki sa polaczone z wierzcholkiem B
listaB.push_back(j);
}
std::list<int>::iterator itA = listaA.begin();
std::list<int>::iterator itB = listaB.begin();
//Czy wierzcholki sa poloczone
if (*itA = *itB)
//zapisz dziecko
//koniec pomyslow
wierzcholek[j].dziecko[l] = wierzcholek[j + 1].indeks;
}
}
}
Zrobiłem strukturę reprezentującą wierzchołki - struktura zawiera tablicę z numerami indeksów dzieci, numer indeksu oraz numer indeksu ojca. Kod sprawdza które wierzchołki są ze sobą połączone, następnie powinien zapisywać to do wierzcholek.dziecko lub do wierzcholek.ojciec - powinien, bo właśnie tu się zatrzymałem. Macie jakiś pomysł w jaki sposób zapisać do struktury dane o dzieciach i ojcach? Są jakieś inne, prostsze metody aby wykonać "konwersję" macierzy sąsiedztwa do grafu?