Cześć, jako zaliczenie przedmiotu muszę napisać program, który będzie przeszukiwał metodą DFS graf nieskierowany. Program ma wypisać, że graf jest dwudzielny lub nie, a jeśli jest, to dodatkowo wypisać jego 2 grupy. Graf ma być reprezentowany za pomocą wektora list. Mój problem polega na tym, że całkowicie pogubiłem się w jaki sposób mogę to zrobić. Wydaję mi się, że najprościej dla mnie byłoby użyć tych funkcji i zmiennych:
#include <iostream>
#include <vector>
#include <list>
using namespace std;
void DFS();
void dodaj_krawedz(vector<list<int>> lista_sasiedztwa, int u, int v) {
lista_sasiedztwa[u].push_back(v);
lista_sasiedztwa[v].push_back(u);
}
int main() {
int n;
vector<list<int>> lista_sasiedztwa;
vector<bool> odwiedzone;
vector<int> kolor;
}
Niestety nie mam pojęcia jak zrobić, żeby wyświetlać jedynie wierzchołki, które zostaną podane przez użytkownika, czyli np. jeśli nie poda wierzchołka 0 i 2, to przy wyświetlaniu grafu nie pojawią się te cyfry jako węzły. Mam również problem czy wpakować to w jakąś strukturę graf, czy może jednak zostawić tablice i zmienne w main'ie.
Proszę o wytłumaczenie, czas mi się kończy, a pomysłów brak ;(