void func(int a, bool arr[]) {
    arr[a] = true;
    // print
    for(list<int>::iterator i = global_list[a].begin(); i != global_list[a].end(); ++i)
        if(!arr[*i])
            func(*i, arr);
}
Как я понимаю, нужно это перевести в стековую реализацию, но я не понимаю как.
Дополнения: это был псевдокод, вот полный код http://pastebin.com/fa3kyPU1


