Cod sursa(job #1292705)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 14 decembrie 2014 17:44:10
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

const int MAXN = 50001;

int Ans;
vector <int> Graf[MAXN];
bool Viz[MAXN];
int Sol[MAXN];

void DFS (const int &nod)
{
    Viz[nod] = 1;

    vector <int> :: iterator it;
    for (it = Graf[nod].begin (); it != Graf[nod].end (); ++ it)
        if (!Viz[*it])
            DFS (*it);

    Sol[++ Ans] = nod;
}

int main()
{
    int N, M, i, a, b;

    in >> N >> M;
    for (i = 1; i <= M; i ++){
        in >> a >> b;
        Graf[a].push_back (b);
    }

    for (i = 1; i <= N; i ++)
        if (!Viz[i])
            DFS (i);

    for (i = N; i; i --)
        out << Sol[i] << " ";

    return 0;
}