Cod sursa(job #1378226)

Utilizator priestnoobFMI - Dan Nema priestnoob Data 6 martie 2015 11:03:53
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
#include<vector>
#include<stack>

using namespace std;

ifstream f("sortaret.in");
ofstream g("sortaret.out");

vector< vector<int> > v;
vector<int> viz;
int n,m,aux1,aux2;
stack<int> st;

void citire()
{
    f>>n>>m;
    v.resize(n+1, vector<int> ());
    viz.resize(n+1);
    for(int i=1;i<=m;++i)
    {
        f>>aux1>>aux2;
        v[aux1].push_back(aux2);
    }
}

void dfs (int nod)
{
    viz[nod]=1;
    for(auto it=v[nod].begin();it!=v[nod].end();++it)
    {
        if(!viz[*it])
        {
            dfs(*it);
        }
    }
    st.push(nod);
}

void afisare()
{
    while(!st.empty())
    {
        g<<st.top()<<' ';
        st.pop();
    }
}

void solve()
{
    citire();
    for(int i=1;i<=n;++i)
    {
        if(!viz[i]) dfs(i);
    }
    afisare();
}

int main()
{
    solve();
}