Cod sursa(job #729909)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 30 martie 2012 21:48:30
Problema Sortare topologica Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <stack>
#include <bitset>
#include <vector>
#define N 50010

using namespace std;

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

stack<int> S;
vector<int> A[N];
bitset<N> V;
int n,i,a,b,m;

void DF(int nod) {
    V[nod]=1;
    for (unsigned int i=0;i<A[nod].size();i++)
        if (!V[A[nod][i]]) DF(A[nod][i]);
    S.push(nod);
    return;
}

int main() {
    for (f >> n >> m,i=1;i<=m;i++) {
        f >> a >> b;
        A[a].push_back(b);
    }
    for (i=1;i<=n;i++)
        if (!V[i]) DF(i);
    for (;!S.empty();S.pop())
        g << S.top() << ' ';
    g << '\n';
    f.close();g.close();
    return 0;
}