Sortowanie topologiczne przy użyciu DFS bez rekursji

Wiem, że powszechnym sposobem na sortowanie topologiczne jest użycie DFS z rekurencją. Ale jak byś to zrobił używającstack<int> zamiast rekurencji? Muszę uzyskać odwrócony post-order, ale utknąłem trochę:

Wykres jest avector<vector<int> > lista sąsiedztwa

Poniżej znajduje się DFS, którego chcę użyć do sortowania topologicznego

bool visited[MAX]={0};
stack<int> dfs, postOrder;
vector<int> newVec;
vector<int>::iterator it;

for(int i=0;i<MAX;i++){
    if(visited[i]==false){
        dfs.push(i);
    }   
    while(!dfs.empty()){
        int node=dfs.top();
        dfs.pop();
        visited[node]=true;
        newVec=graph[node]; //vector of neighboors
        for(it=newVec.begin();it!=newVec.end();it++){
            int son=*it;
            if(visited[son]==false){
                dfs.push(son);
            }
        }
    }
}

questionAnswers(5)

yourAnswerToTheQuestion