class zadanie {
public:
int id;
int waga;
int czas;
vector <zadanie> nast;
vector <zadanie> poprz;
};
int greedy(zadanie &task) {
zadanie next;
if(byl[task.id] == 0) {
byl[task.id] = 1;
wynik += funkcja_celu(moment, task);
moment += task.czas;
sort(moment, task); //sortowanie
for(int i=0; i<task.nast.size(); i++) {
next = task.nast[i];
greedy(next);
}
}
else {
cout << "w else i ma poprzednika" << endl;
return 0;
}
}
Mam pewien problem... Chodzi o to że mam graf, w którym kolejność przykładowa jest następująca 0->1->9, 0 ma jeszcze następnik 2 i 3... No i po wywołaniu funkcji wchodzi do obiektu 0, potem do 1 i powinien iść do 9, a on to olewa i idzie od razu do kolejnego następnika 0, czyli 2... Dodatkowo dowiedziałem się po wielu hard debugach, że po wejściu do 0 przy sprawdzeniu rozmiaru vectora następników dla elementu 1 daje mi 0 (mimo iż element 1 ma następnik...) Podejrzewam, że związane może to być z rekurencyjnym wywołaniem funkcji i utworzeniem się automatycznego obiektu (chociaż nie mam pojęcia why...)