Cod sursa(job #2354767)

Utilizator cristii2000cristiiPanaite Cristian cristii2000cristii Data 25 februarie 2019 16:09:52
Problema Sortare topologica Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>

#include <fstream>

#include <vector>



using namespace std;



ifstream in("sortaret.in");

ofstream out("sortaret.out");





vector <int> G[50005];

int n, m;

int sol[500005];

int viz[500005];

int counter;



void citire()

{

    in >> n >> m;

    for(int i = 0; i < m; i++)

    {

        int x, y;

        in >> x >> y;

        G[x].push_back(y);

    }

}



void dfs(int node)

{

    viz[node] = 1;

    for(int i = 0; i < G[node].size() ; i++)

    {

        int x = G[node][i];

        if(!viz[G[node][i]])

            dfs(G[node][i]);

    }

    sol[counter++] = node;

}



void solve()

{

    for(int i = 1; i <= n; i++)

    {

        if(!viz[i])

            dfs(i);

    }

    for(int i = counter - 1; i >= 0; i--)

        out << sol[i] << " ";

}



int main()

{

    citire();

    solve();



    return 0;

}